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

如何转换为C#PHP包(';H40';,$string);?,c#,php,C#,Php,我试图重现PHP包('H40',$string)函数的结果。 到目前为止,我取得了不错的成绩,但略有不同。 这是我试过的 PHP代码 <?php function test(){ $packed = pack('H40',"42d5abcd859afd2cc0f6b6f8cc2a9cd41f66a120"); return $packed; } echo test(); ?> C#代码: private void test(){ 字符串结果=PackH40(“42

我试图重现PHP包('H40',$string)函数的结果。 到目前为止,我取得了不错的成绩,但略有不同。 这是我试过的

PHP代码

<?php
function test(){
   $packed = pack('H40',"42d5abcd859afd2cc0f6b6f8cc2a9cd41f66a120");
   return $packed;
}
echo test();
?> 

C#代码:

private void test(){
字符串结果=PackH40(“42d5abcd859afd2cc0f6b6f8cc2a9cd41f66a120”);
}
专用字符串PackH40(字符串输入)
{
字符串结果=string.Empty;
输入=输入。替换(“-”,“”);
byte[]hashBytes=新字节[input.Length/2];
for(int i=0;i
结果在浏览器中看起来很相似,但如果将它们写入文件中,它们就不相等。 到目前为止,我尝试了C#输出的每种编码,但什么都没有。 我做错了什么

编辑: 我试过这种方法 这个问题是类似的,在这种情况下没有帮助我


解决:主要问题是我想“查看”数据并进行比较。我大错特错了!将所有内容转换为byte[],效果非常好

这回答了你的问题吗?我尝试了这种方法,但在这种情况下,这不是答案。不确定H40是否有什么不同。我只是尝试了两种方法。首先,我在两侧进行了Base64字符串转换,它们匹配!其次,我将所有字节转换为字符串,它们也匹配。我猜是当我将它们转换回字符串时的编码。我会进一步调查,这能回答你的问题吗?我尝试了这种方法,但在这种情况下,这不是答案。不确定H40是否有什么不同。我只是尝试了两种方法。首先,我在两侧进行了Base64字符串转换,它们匹配!其次,我将所有字节转换为字符串,它们也匹配。我猜是当我将它们转换回字符串时的编码。我会进一步调查此事。
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);
}