我试图将整数保存为字符。
char i = 80;
printf("0x%x", i);
上面的代码显示0x50(1个字节)。但如果该值大于128,则会打印一个4字节的值。
char i = 130;
printf("0x%x", i); // this prints 0xffffff82
如果值大于128,如何将整数值存储为1个字节(在第二个示例中仅打印82而不是ffffff82)?
答案 0 :(得分:1)
这是签署了char
类型的系统上的预期行为:char
的负值被符号扩展为int
的大小。
如果您想打印最后八位,可以使用0xFF
进行屏蔽,如下所示:
printf("0x%x", i & 0xFF); // this prints 80
另一种方法是使用unsigned char
。这将避免8位数字的符号扩展,最高位设置为1
。