如何在十六进制编辑器中查找变量

问题描述

我的目标是能够从外部(使用十六进制编辑器)更改校准变量的值。我已经使用Arduino IDE来开发我的代码

定义为float的变量称为校正器,并在setup()之前定义为全局变量float corrector;

在setup()中,我首先定义它的值:corrector = 1.0f;

然后,我打印变量所在的十六进制地址: Serial.print("\tAddress: "); Serial.println((unsigned int)(&corrector),HEX);

我得到的地址是309,当我在十六进制编辑器中查看该地址时,发现的是30,表示0(错误,因为我给变量赋了值1)。

如果有人能告诉我我做得好不好,我将不胜感激。

谢谢。

解决方法

浮点值“ 1.0f”表示为四个字节3f800000(如果您的平台是低端字节序,则可能是相反的顺序)由于这是没有初始化程序的全局变量,因此其地址很可能是 runtime 地址,而不是二进制文件中的地址。

如果您这样更改定义:

float corrector = 1.0f;

您应该能够在符号表中corrector符号所在的位置的二进制文件中找到这些字节。