微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BitConverter VS ToString for Hex

如何解决BitConverter VS ToString for Hex

| 只是想知道是否有人可以解释为什么下面两行代码返回“不同”的结果?是什么导致值反转?这和字节序有关吗?
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
的字节数组。在您的计算机上,此数字存储在little-endian(最后一个最高字节)中。
BitConverter.ToString
在每个字节上分别操作,因此不对输出进行重新排序以得到与上述相同的字,从而保留了存储顺序。 但是,这两个值是相同的:big-endian中的
7F-FF-FF-FF
表示
int.MaxValue
,little-endian中的
FF-FF-FF-7F
表示
BitConverter
。相同的号码。     ,我猜是因为
GetBytes
返回的字节数组由
BitConverter.ToString
格式化-在我看来-非常好 还要记住,按位表示可能与值不同!这取决于最重要的字节所在的位置! hth     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。