C# 十六进制的位转换器与ToString

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返回了一个字节数组,在我看来,这个数组的格式非常好 还要记住,按位表示可能与值不同!这取决于最重要的字节

只是想知道是否有人能解释为什么下面两行代码返回“不同”的结果?是什么导致了反向值?这和endianness有关吗

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
用于
位转换器
,以小端单位。相同的号码。

是的,对不起,到现在为止我只喝了一杯咖啡。我更新了我的答案-二进制表示和值可能不同。非常详细的答案。非常感谢。