只是想知道是否有人可以解释为什么以下两行代码返回“不同”的结果?什么导致反向值?这与字节序有关吗?
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
,采用小端。同号。