我有一个名为“ hex”的简短c程序,该程序需要两个字符并输出其相应的十六进制代码:
int main(void) {
unsigned char var[3];
printf("%x ", var[0]);
printf("%x ", var[1]);
printf("Enter two hex characters: ");
scanf("%2s", var);
}
现在,当我使用十六进制代码中由两个字符“ A”和“ 0”组成的输入来调用该程序时:
echo -e "\x41\x00" ./hex
然后输出是(如预期的那样)“ 41 0”。但是当我用十六进制代码“ 0d”两次调用该程序时:
echo -e "\x0d\x0d" ./hex
然后输出为“ 0 bb”?为什么会这样呢?如何为十六进制代码“ 0d”使用正确的输入而不是我正在使用的输入?
打印必须在阅读后。
#include <stdio.h>
int main(void) {
unsigned char var[3];
scanf("%2s", var);
printf("%x ", var[0]);
printf("%x ", var[1]);
printf("Enter two hex characters: ");
}