使用C语言从M68k ram地址获取特定的十六进制

时间:2014-12-25 21:26:14

标签: c gcc memory-address motorola

我有一个与此另一个相关的新问题,已解决Get specific byte from M68k ram address with C language

现在我的地址有一整行:

FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

是十六进制。

如果我尝试使用与其他问题相同的模式,我无法获得printf显示的值... 这就是我所做的:

char* REG_SW;
REG_SW = (char*)0x300123;

然后:

printf("H DIP SWITCHES:  %d",   REG_SW[0])

给我-1

提前致谢和Merry XMas !!

1 个答案:

答案 0 :(得分:2)

要以十六进制格式打印char值,请使用

printf("H DIP SWITCHES:  %02X",   REG_SW[0])

查看printf X教程,但我们案例的本质是使用02格式说明符,其值以十六进制形式打印,宽度为2字节(这是格式宽度背后的内容) unsigned char* REG_SW (unsigned char*) 0x300123;

编辑 - 作为chux在他对该问题的评论中观察到其关键性将寄存器值视为无符号类型

{{1}}