我正在尝试使用Bitconverter类将值转换byte array为hexadecimal值.
long hexValue = 0X780B13436587;
byte[] byteArray = BitConverter.GetBytes ( hexValue );
string hexResult = BitConverter.ToString ( byteArray );
Run Code Online (Sandbox Code Playgroud)
现在如果我逐行执行上面的代码,这就是我所看到的

我认为hexResult字符串与hexValue(即780B13436587h)相同,但我得到的是不同的,我错过了什么,如果我错了,请纠正我.
谢谢!
字节序.
BitConverter使用CPU-endianness,对大多数人来说意味着:little-endian.当人们写数字时,我们倾向于写大端(广义上说:你写成数千,然后数百,然后是数十,然后是数字).对于CPU,big-endian意味着最重要的字节是第一个,最不重要的字节是最后一个.但是,除非您使用Itanium,否则您的CPU可能是little-endian,这意味着最重要的字节是最后一个,而最不重要的字节是第一个.除非你在原始内存中窥视,否则实现CPU 无关紧要 - 它将确保数值和二进制算法仍然按预期方式工作.然而,通过在原始内存中窥视BitConverter 工作 - 因此您可以看到反转的数据.
如果你想要big-endian格式的值,那么你需要:
BitConverter.IsLittleEndian值,如果true:
| 归档时间: |
|
| 查看次数: |
1251 次 |
| 最近记录: |