gpt4 book ai didi

c# - 使用 C# 中的 BitConverter 类将字节数组转换为十六进制值?

转载 作者:太空宇宙 更新时间:2023-11-03 18:29:20 24 4
gpt4 key购买 nike

我正在尝试使用 Bitconverterbyte array 转换为 hexadecimal 值类。

long hexValue = 0X780B13436587;
byte[] byteArray = BitConverter.GetBytes ( hexValue );
string hexResult = BitConverter.ToString ( byteArray );

现在如果我逐行执行上面的代码,这就是我所看到的

enter image description here

我认为 hexResult 字符串与 hexValue 相同(即 780B13436587h),但我得到的是不同的,我是否遗漏了什么,如果我错了请纠正我。

谢谢!

最佳答案

字节顺序。

BitConverter 使用 CPU-endianness,对大多数人来说这意味着:little-endian。当人类写数字时,我们倾向于写大端(广义上讲:你写的是千位,然后是百位,然后是十位,然后是数字)。对于 CPU,big-endian 意味着最高有效字节是first,最低有效字节是last。但是,除非您使用的是 Itanium,否则您的 CPU 可能是小端字节序的,这意味着最高有效字节是最后,而最低有效字节是第一个>。 CPU 的实现使得这无关紧要,除非您正在窥视原始内存 - 它将确保数字和二进制算法仍然按照您期望的方式工作。但是,BitConverter 工作 通过查看原始内存内部 - 因此您会看到反转的数据。

如果您想要大端格式的值,那么您需要:

  • 按大端顺序手动执行
  • 检查 BitConverter.IsLittleEndian 值,如果 true:
    • 要么反转输入字节
    • 或反转输出

关于c# - 使用 C# 中的 BitConverter 类将字节数组转换为十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25996837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com