如何将PHP pack('H40',$ string);转换为C#?

我正在尝试重现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#输出的所有编码,但没有尝试。 我究竟做错了什么?

评论