我有一个号码列表如下:
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
(宽度)- 最小数量
要打印的字符。如果
要打印的值短于
这个数字,结果是右对齐的
在此宽度内通过左侧填充
与垫字符。 默认情况下这是
空格,但我们使用了前导零
指定零作为填充字符。
即使结果是,该值也不会被截断
更大。x
- 十六进制说明符
整数。更多这里
我这样使用它:
printf("my number is 0x%02X\n",number);
// Output: my number is 0x4A
只需将数字“2”更改为您想要打印的任意数量的字符;)
你的代码没有问题。它确实按照您想要的方式打印。 或者,您可以这样做:
printf("%04x",a);
您可以使用以下代码片段:
#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;
}
它在 4 个位置打印十进制和十六进制数字,并用零填充。