Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中从十六进制到uint8的扫描_C_Hex_Scanf - Fatal编程技术网

C语言中从十六进制到uint8的扫描

C语言中从十六进制到uint8的扫描,c,hex,scanf,C,Hex,Scanf,我必须模仿一种简单的汇编语言。我有一个256字节的内存,我选择用uint8\u t表来表示(因为它们是字节):RAM[256] 我的问题是,我需要以十六进制输入代码,因此我有如下行: scanf("%02X", &RAM [arg]); 或 取决于间接寻址的级别 这不仅会产生警告: 格式“%X”要求参数类型为“unsigned int*”,但参数2的类型为“uint8_t*{aka unsigned char*}” 但它也会在我的RAM中一次“擦除”4个字节。 我想

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

我的问题是,我需要以十六进制输入代码,因此我有如下行:

scanf("%02X", &RAM [arg]);

取决于间接寻址的级别

这不仅会产生警告:

格式“%X”要求参数类型为“unsigned int*”,但参数2的类型为“uint8_t*{aka unsigned char*}”

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

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

我尝试了
lu=fscanf(prog,“%”SCNx8,大小)但我现在收到以下警告:

格式“%hhx”要求参数类型为“unsigned char*”,但参数3的类型为“int”[-Wformat=]

lu = fscanf(prog, "%" SCNx8, size);

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

scanf("%" SCNu8, &RAM[i])
因为最终您正在读取一个
uint8\t
类型变量

要使此操作成功,您需要包含标题


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

注意
uint8\u t
在C标准中不是字节,而是
char
是字节。(但是如果你的模拟系统说8位是字节的大小,
unit8\u t
是一种很好的类型)@Stargateur好吧,
uint8\u t
是一个字节,如果它存在的话。除了小写的
u
你会用
x
@AnttiHaapala替换它,那么字节总是8位吗?这在C标准中是错误的,字节是字符位,不能小于8
uint8\u t
是一个八位字节而不是一个字节。我说过:只要它存在,
uint8\u t
就是一个字节。我并没有说一个字节总是8位。感谢您的回答,我尝试了两种方法:scanf(“%”SCNx8,&RAM[I])和scanf(“%SCNx8”,&RAM[I]),无论哪种方法,我都会收到警告:第一种:警告:格式中的伪尾随“%”,第二种:格式“%S”要求参数类型为“wchar\u t*”,但参数2的类型为“uint8\t*”{aka unsigned char*}@Tchae.:include header?类型也是
uint8_t
?第一个是正确的。第二个是错误的。我的包含如下所示:#include#include#include#include#我使用GCC-wall完整警告实际上是:cx25.0.c:127:10:警告:格式为[-Wformat=]的虚假“%”scanf(“%”,SCNx8,&RAM[arg]);^cx25.0.c:127:10:警告:格式[-Wformat extra args]@Tchae的参数太多:这将是
scanf(“%”SCNx8,&RAM[arg]);
没有逗号。
scanf("%" SCNu8, &RAM[i])