如何解决如何在十六进制编辑器中查找变量
我的目标是能够从外部(使用十六进制编辑器)更改校准变量的值。我已经使用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
符号所在的位置的二进制文件中找到这些字节。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。