gpt4 book ai didi

c - 从命令行读取十六进制到 unsigned char 和 unsigned Short

转载 作者:行者123 更新时间:2023-11-30 18:36:56 25 4
gpt4 key购买 nike

int main(int argc, char *argv[]){
unsigned char Data = 0xff;
unsigned short addr = 0xff;

sscanf(argv[1], "%u", &Data);
sscanf(argv[2], "%hu", &addr);

printf("data is %u addr is %hu ", Data, addr);

return 0;
}

嗨,我正在尝试将十六进制格式的命令行参数读取为 unsigned char 和 unsigned Short。请检查上面的代码片段。输出始终为 0xff(初始化值)。我可以知道需要更改什么才能读取输入吗?

最佳答案

通过使用%u说明符,您告诉sscanf您想要读取十进制格式(基数为10)的无符号整数。如果您需要十六进制输入(基数 16),则必须使用 %x 说明符。此外,您需要指定正确的整数大小。对于unsigned char,您将需要hh作为长度修饰符。使用错误的长度修饰符会导致未定义的行为。

所以您应该尝试使用 %hhx 说明符。像这样的东西:

#include <stdio.h>

int main(void){
unsigned char Data = 0xff;

char argv1[20] = "0x40";

sscanf(argv1, "0x%hhx", &Data);

printf("data is %u\n", Data);

return 0;

}

Output: data is 64

对于十六进制的无符号短,您应该使用%hx

关于c - 从命令行读取十六进制到 unsigned char 和 unsigned Short,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39377184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com