首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C中扫描uint8_t的十六进制

C中扫描uint8_t的十六进制
EN

Stack Overflow用户
提问于 2017-12-15 09:27:50
回答 1查看 1.9K关注 0票数 1

我得模仿一种简单的汇编语言。我有一个256个字节的内存,我选择用一个uint8_t表(因为它们是字节)来表示:RAM[256]

我的问题是,我需要用十六进制输入代码,这样我就有了如下行:

代码语言:javascript
复制
scanf("%02X", &RAM [arg]);

代码语言:javascript
复制
scanf("%02X", &RAM[RAM[arg]]);

取决于间接的级别。

这不仅会产生警告:

格式‘’%X‘期待’无符号int *‘类型的参数,但参数2的类型是’uint8_t*{又名无符号字符*}‘

但它也会在我的RAM中一次“擦除”4个字节。我想%02X格式在这里不是正确的选择,但我找不到任何其他方式进入十六进制。

scanf("%" SCNx8, size);工作正常,但是现在我必须从文件中读取代码,文件又是十六进制的,所有的值都用空格或换行符分隔。

我尝试了lu = fscanf(prog, "%" SCNx8, size);,但现在收到了以下警告:

格式‘’%hhx‘期望参数类型为’无符号字符*‘,但参数3的类型为’int‘-Wformat= lu = fscanf(prog,"%“SCNx8,size);

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-15 09:29:26

这种情况的正确格式说明符是:

代码语言:javascript
复制
scanf("%" SCNu8, &RAM[i])

因为最终您将读取一个uint8_t类型变量。

要想成功,您需要包含头<inttypes.h>

对于十六进制,格式说明符将是SCNx8

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47829298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档