【发布时间】:2022-01-09 03:54:12
【问题描述】:
我正在尝试将 ASCII 字符数组转换为十六进制字符数组以执行以下操作:
输入:char string[5]="abcd1234567"
输出:char buf[4096] = {0x63, 0x61, 0x62, 0x63, 0x64, 0x31, 0x32, 0x33 0x34, 0x35, 0x36, 0x37};
但我的代码不起作用,我无法弄清楚。
代码:
char string[20]="abcd";
char buff[4000];
sprintf(buff[0],"%02x",string[0]);
printf("string[0]: %c",string[0]);
它给出了这个错误:
warning: passing argument 1 of 'sprintf' makes pointer from integer without a cast [-Wint-conversion]
16 | sprintf(buff[0],"%02x",string[0]);
【问题讨论】:
-
提示:它已经是那种格式了。
-
这似乎只是警告而不是错误
-
sprintf的第一个参数必须是buff而不是buff[0].... -
string[5]太短了 -
您在第一个示例中的输出是错误的。输出显示
'c' 作为字符串中的第一项 (0x63)。