我有一个数字列表如下:
0、16、32、48……
我需要将这些数字以十六进制输出为:
0000、0010、0020、0030、0040……
我已经尝试了一些解决方案,例如:
printf("%.4x", a); // Where a is an integer
但我得到的结果是:
0000,0001,0002,0003,0004 ...
我觉得我已经接近了。我该怎么修复它?
我不太擅长在C中使用printf
。
尝试:
printf("%04x",a);
0
- 在指定的宽度内,左侧使用零(0)而不是空格进行填充。4
(width) - 要打印的最小字符数。如果要打印的值比此数字短,则通过在左侧使用填充字符将结果右对齐到此宽度。
默认情况下,这是一个空格,但我们使用的前导零指定零作为填充字符。即使结果更大,该值也不会被截断。x
- 十六进制整数的格式说明符。更多信息请参见这里
%.4x
格式符号是可以的,与%04x
达到相同的结果。问题主要在于提供给printf()
的数据。 - Jonathan Lefflerprintf("my number is 0x%02X\n",number);
// Output: my number is 0x4A
只需将数字“2”更改为您想要打印的任意字符即可 ;)
#include<stdio.h>
int main(int argc, char *argv[]){
unsigned int i;
printf("decimal hexadecimal\n");
for (i = 0; i <= 256; i+=16)
printf("%04d 0x%04X\n", i, i);
return 0;
}
你的代码没有问题。它以你想要的方式进行打印。或者,你也可以这样做:
printf("%04x",a);
printf("%d: %.4x\n", a, a)
,我认为你的变量a
可能不是你认为的那个值。 - user180100