所以我正在编写一个非常小而简单的程序,它将一个数字作为输入,将其转换为十六进制,并一次打印出两个字符。
对于某些数字,它会在输出前打印出 ffffff。
这是我的代码:
//Convert the input to an unsigned int
unsigned int a = strtoul (argv[1], NULL, 0);
//Convert the unsigned int to a char pointer
char* c = (char*) &a;
//Print out the char two at a time
for(int i = 0; i < 4; i++){
printf("%02x ", c[i]);
}
大部分输出都很好,如下所示:
./hex_int 1
01 00 00 00
但对于某些数字,输出如下所示:
./hex_int 100000
ffffffa0 ffffff86 01 00
如果您删除所有 f,则转换是正确的,但我无法弄清楚为什么它仅在某些输入上执行此操作。
有人有想法么?