用于十六进制的 BitConverter 与 ToString

发布于 2024-11-09 12:20:08 字数 212 浏览 0 评论 0原文

只是想知道是否有人可以解释为什么下面两行代码返回“不同”的结果?是什么导致了相反的值?这与字节序有关吗?

int.MaxValue.ToString("X") //Result: 7FFFFFFF
BitConverter.ToString(BitConverter.GetBytes(int.MaxValue)) //Result: FF-FF-FF-7F

Just wondering if someone could explain why the two following lines of code return "different" results? What causes the reversed values? Is this something to do with endianness?

int.MaxValue.ToString("X") //Result: 7FFFFFFF
BitConverter.ToString(BitConverter.GetBytes(int.MaxValue)) //Result: FF-FF-FF-7F

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

勿忘初心 2024-11-16 12:20:08

int.MaxValue.ToString("X") 输出 7FFFFFFF,即数字 2147483647 作为一个整体

另一方面,BitConverter.GetBytes 返回一个字节数组,表示内存中的2147483647。在您的计算机上,该数字以小端存储(最高字节在最后)。 BitConverter.ToString 分别对每个字节进行操作,因此不会重新排序输出以提供与上面相同的结果,从而保留了内存顺序。

但是,这两个值是相同的:int.MaxValue7F-FF-FF-FF(采用大端)和 FF-FF-FF-7F 表示 BitConverter,采用小端字节序。相同的号码。

int.MaxValue.ToString("X") outputs 7FFFFFFF, that is, the number 2147483647 as a whole.

On the other hand, BitConverter.GetBytes returns an array of bytes representing 2147483647 in memory. On your machine, this number is stored in little-endian (highest byte last). And BitConverter.ToString operates separately on each byte, therefore not reordering output to give the same as above, thus preserving the memory order.

However the two values are the same : 7F-FF-FF-FF for int.MaxValue, in big-endian, and FF-FF-FF-7F for BitConverter, in little-endian. Same number.

匿名。 2024-11-16 12:20:08

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

而且还要记住,按位表示可能与价值!这取决于最高有效字节所在的位置!

I would guess because GetBytes returns an array of bytes which BitConverter.ToString formatted - in my opinion - rather nicely

And also keep in mind that the bitwise represantattion may be different from the value! This depends where the most signigicant byte sits!

hth

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文