我正在尝试重现PHP pack('H40',$ string)函数的结果。 到目前为止,我取得了不错的成绩,但略有不同。 这是我尝试过的
PHP代码
<?php
function test(){
$packed = pack('H40',"42d5abcd859afd2cc0f6b6f8cc2a9cd41f66a120");
return $packed;
}
echo test();
?>
C#代码:
private void test(){
string result = PackH40("42d5abcd859afd2cc0f6b6f8cc2a9cd41f66a120");
}
private string PackH40(string input)
{
string result = string.Empty;
input = input.Replace("-", " ");
byte[] hashBytes = new byte[input.Length / 2];
for (int i = 0; i < hashBytes.Length; i++)
{
hashBytes[i] = Convert.ToByte(input.Substring(i * 2, 2), 16);
}
return Encoding.UTF8.GetString(hashBytes);
}
结果在浏览器中看起来相似,但是如果将它们写入文件,它们将不相等。 到目前为止,我尝试了C#输出的所有编码,但没有尝试。 我究竟做错了什么?