BitConverter VS ToString for Hex
本文关键字:Hex for ToString VS BitConverter | 更新日期: 2023-09-27 17:57:24
只是想知道是否有人可以解释为什么以下两行代码返回"不同"的结果?什么原因导致值颠倒?这与字节序有关吗?
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
。相同的数字。
我猜是因为GetBytes
返回一个字节数组,在我看来,该数组BitConverter.ToString
格式化 - 相当不错
还要记住,按位表示可能与值不同!这取决于最重要的字节所在的位置!
呵呵