C# 十六进制的位转换器与ToString
只是想知道是否有人能解释为什么下面两行代码返回“不同”的结果?是什么导致了反向值?这和endianness有关吗C# 十六进制的位转换器与ToString,c#,numbers,hex,endianness,bitconverter,C#,Numbers,Hex,Endianness,Bitconverter,只是想知道是否有人能解释为什么下面两行代码返回“不同”的结果?是什么导致了反向值?这和endianness有关吗 int.MaxValue.ToString("X") //Result: 7FFFFFFF BitConverter.ToString(BitConverter.GetBytes(int.MaxValue)) //Result: FF-FF-FF-7F 我猜是因为GetBytes返回了一个字节数组,在我看来,这个数组的格式非常好 还要记住,按位表示可能与值不同!这取决于最重要的字节
int.MaxValue.ToString("X") //Result: 7FFFFFFF
BitConverter.ToString(BitConverter.GetBytes(int.MaxValue)) //Result: FF-FF-FF-7F
我猜是因为
GetBytes
返回了一个字节数组,在我看来,这个数组的格式非常好
还要记住,按位表示可能与值不同!这取决于最重要的字节所在的位置
hth
int.MaxValue.ToString(“X”)
输出7FFFFFFF
,即数字2147483647
作为一个整体
另一方面,BitConverter.GetBytes
返回表示内存中2147483647
的字节数组。在您的机器上,此数字存储在小端(最后一个最高字节)。和BitConverter.ToString
分别对每个字节进行操作,因此不会对输出进行重新排序以获得与上述相同的结果,从而保留内存顺序
但是,这两个值是相同的:
7F-FF-FF-FF
用于int.MaxValue
,以大端单位,而FF-FF-7F
用于位转换器
,以小端单位。相同的号码。是的,对不起,到现在为止我只喝了一杯咖啡。我更新了我的答案-二进制表示和值可能不同。非常详细的答案。非常感谢。