首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >十六进制BitConverter与ToString

十六进制BitConverter与ToString
EN

Stack Overflow用户
提问于 2011-05-24 15:31:57
回答 2查看 2.2K关注 0票数 4

我想知道是否有人能解释一下为什么下面这两行代码返回“不同”的结果?是什么导致了反转的值?这与字符顺序有关吗?

代码语言:javascript
复制
int.MaxValue.ToString("X") //Result: 7FFFFFFF
BitConverter.ToString(BitConverter.GetBytes(int.MaxValue)) //Result: FF-FF-FF-7F
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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,表示小端。同样的号码。

票数 13
EN

Stack Overflow用户

发布于 2011-05-24 15:33:53

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

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

hth

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6107121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档