只是想知道是否有人可以解释为什么以下两行代码返回“不同”的结果?什么导致反向值?这与字节序有关吗?

int.MaxValue.ToString("X") //Result: 7FFFFFFF
BitConverter.ToString(BitConverter.GetBytes(int.MaxValue)) //Result: FF-FF-FF-7F

最佳答案

int.MaxValue.ToString("X") 输出 7FFFFFFF ,即整个 2147483647 的数字。

另一方面,BitConverter.GetBytes 返回一个字节数组,表示内存中的 2147483647。在您的机器上,此数字以小端(最高字节最后)存储。并且 BitConverter.ToString 对每个字节单独操作,因此不会重新排序输出以给出与上述相同的结果,从而保留了内存顺序。

然而,这两个值是相同的:7F-FF-FF-FF 用于 int.MaxValue ,采用大端,FF-FF-FF-7F 用于 BitConverter ,采用小端。同号。

10-06 09:49