我想知道是否有人能解释一下为什么下面这两行代码返回“不同”的结果?是什么导致了反转的值?这与字符顺序有关吗?
int.MaxValue.ToString("X") //Result: 7FFFFFFF
BitConverter.ToString(BitConverter.GetBytes(int.MaxValue)) //Result: FF-FF-FF-7F发布于 2011-05-24 15:49:20
int.MaxValue.ToString("X")输出7FFFFFFF,即作为一个整体的数字2147483647。
另一方面,BitConverter.GetBytes在内存中返回表示2147483647的字节数组。在您的机器上,这个数字以小端(最后最高字节)的形式存储。和BitConverter.ToString分别对每个字节进行操作,因此不会重新排序输出以提供与上面相同的结果,从而保持内存顺序。
但是,这两个值是相同的:7F-FF-FF-FF表示int.MaxValue,采用大端;FF-FF-FF-7F表示BitConverter,表示小端。同样的号码。
发布于 2011-05-24 15:33:53
我猜是因为GetBytes返回了BitConverter.ToString格式化的字节数组--在我看来--相当不错
还要记住,按位表示可能与值不同!这取决于最重要的字节位于何处!
hth
https://stackoverflow.com/questions/6107121
复制相似问题