c# - 如何将 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# 输出的所有编码,但什么也没有。我究竟做错了什么?
编辑:我尝试了 尝试在 C# 中重现 PHP 的 pack("H*") 函数中的方法,问题类似,在这种情况下对我没有帮助。
已解决:主要问题是我想“查看”数据并进行比较。我大错特错了!全部转换为 byte[] ,它就像一个魅力!
解决方案
推荐阅读
- python - 复数/分支割的自变量的数值稳定性
- java - 如何获取一分钟处理窗口的最新记录
- javascript - 为什么当父元素的宽度发生变化时子元素的宽度会发生变化?
- x11 - 如何强制一个设备的所有事件由一个窗口处理,同时允许所有其他设备的所有其他事件正常处理?
- javascript - 为什么使用原型添加新方法不能按预期工作
- python-3.x - 文本情感检测
- sorting - 在 Jekyll 中按“最后一个”排序不起作用?反向排序等
- xcode - 缺少命令行模板
- javascript - 如何在 Google Maps V3 中定位自定义 controlUI?
- c - 关于消费者和生产者线程的问题