eclipse的内存视图中的十六进制表示错误

Posted

技术标签:

【中文标题】eclipse的内存视图中的十六进制表示错误【英文标题】:Wrong hexadecimal representation in the memory view of eclipse 【发布时间】:2021-05-12 20:59:02 【问题描述】:

在 Eclipse (2012-12) 中,我检查了无符号整数和十六进制整数数组的内存。

int-array 定义为:

int Karray[] 1,2,3,4,5,6,255,258,18;

表示 unsigned int 的内存视图是:

另一方面,如果我切换到十六进制表示,那么我得到以下结果:

内存中的起点也以蓝色突出显示。尽管有 258 个值,但似乎最重要的位置在右侧,而最不重要的位置在左侧。但是对于 258 的值,它在内存中是用 201 来表示的,所以看起来最显着的位置在右边,最不显着的位置在左边。

谁能给我一个提示来解决这个矛盾?

【问题讨论】:

您使用近 10 年的 Eclipse 版本有什么原因吗? 内存视图将值显示为0x02010000,即小端字节序中的0x00000102 您对这两种情况都说“似乎最重要的位置在右边,而最不重要的位置在左边”。矛盾在哪里? 【参考方案1】:

十六进制视图只是显示内存中的字节,而不尝试将它们转换为整数。

在您的处理器上,整数值以"Little Endian" 格式存储在内存中。这意味着最不重要的 byte 存储在最低的内存地址。

因此,当将 02010000 字节加载为整数时,值的构造如下:

0x00 << 24 | 0x00 << 16 | 0x01 << 8 | 0x02

这是 258。

【讨论】:

以上是关于eclipse的内存视图中的十六进制表示错误的主要内容,如果未能解决你的问题,请参考以下文章

Java中的十六进制转整数

以十六进制获取视图的背景颜色

十六进制转十进制

Bailian4003 十六进制转十进制入门

C# 将字符转换为字节(十六进制表示)

基础练习 ——十六进制转十进制