4

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

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

2 回答 2

13

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

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

然而,这两个值是相同的:7F-FF-FF-FFfor int.MaxValue, in big-endian 和FF-FF-FF-7Ffor BitConverter, in little-endian。同号。

于 2011-05-24T07:49:19.670 回答
-1

我猜是因为GetBytes返回了一个格式化的字节数组BitConverter.ToString——在我看来——相当不错

还要记住,按位表示可能与值不同!这取决于最重要的字节所在的位置!

hth

于 2011-05-24T07:33:52.673 回答