我正在尝试将整数保存为字符。
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)?
最佳答案
这是 char
类型有符号的系统上的预期行为:char
的负值被符号扩展为 int
的大小>.
如果您想打印最后八位,可以使用 0xFF
进行掩码,如下所示:
printf("0x%x", i & 0xFF); // this prints 80
另一种方法是使用unsigned char
。这将避免最高有效位设置为 1
的 8 位数字的符号扩展。
关于c - 将 int 保存为 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22884809/