【发布时间】:2020-12-02 05:14:02
【问题描述】:
我尝试用十六进制打印一个负数,我希望它是 6 个字符。
例如,十六进制的-132 是ffffff7c,想要的输出应该是ffff7c。
对于正数,这条线工作:
fprintf(fd,"%07d \t%06x \n",i+100,instruction_data[i]);
对于负数,我再得到两个f。
【问题讨论】:
-
我假设
instruction_data[i]是uint32_t。%06x只会在 MSB 为0x00时按预期工作。因为不是(它是0xFF),所以您需要用0xFFFFFF屏蔽instruction_data[i]。 -
请注意,
%x需要 unsigned int... -
@pmg 为什么不在网站上发布呢?我根据您下面的代码发布了一个社区 wiki。随意编辑或扩展它。
-
感谢您从我的评论@Lundin 中回答。我仅限于移动设备,为了简洁起见,通常会使用 cmets。