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的内存视图中的十六进制表示错误的主要内容,如果未能解决你的问题,请参考以下文章