我想得到" 0x08"对于8号,但是当我使用"%#02x"时,我只得到0x8:
int i = 0x08;
printf("%#02x", i); // only print 0x8, not 0x08
似乎宽度数字在#"#"之后无效。格式字符串。 有没有更好的方法来打印我想要的东西而不是使用" 0x%02x"?
答案 0 :(得分:6)
字段宽度包括#
请求的“备用前缀”。
因此您可以使用:printf("%#04x", i);
来获得所需的效果。就我个人而言,我个人更喜欢"0x%02x"
。
@R ..推荐的另一种方法是使用最小精度而不是字段宽度。对于整数,精度排除前缀,并且必要时始终为零填充,因此代码为printf("%#.2x", i);
。
对于x
之类的整数说明符,.
之后的数字是最小精度 - 不会截断更长的数字。这与浮点和字符串的.
行为不同。