我有一个数字列表如下:
0,16,32,48 ......
我需要以十六进制输出这些数字:
<00> 0010,0010,0020,0030,0040 ...
我尝试过如下解决方案:
printf("%.4x",a); // where a is an integer
但我得到的结果是:
<00> 0000,0001 0002,0003,0004 ...
我想我就在附近。任何人都可以提供帮助,因为我不是
在C中printf
非常好。
感谢。
答案 0 :(得分:100)
尝试:
printf("%04x",a);
0
- 左边填充数字
零(0)而不是空格,其中
指定了填充。4
(宽度) - 最小数量
要打印的字符。如果
要打印的值小于
这个数字,结果是正确的
通过左边的填充在这个宽度内
用垫子字符。默认情况下这是
一个空白区域,但我们使用的前导零
指定零作为填充char。
即使结果是,也不会截断该值
大。x
- 十六进制的说明符
整数。更多here
答案 1 :(得分:5)
我这样使用它:
printf("my number is 0x%02X\n",number);
// output: my number is 0x4A
只需将数字“2”更改为任意数量的字符您想要打印;)
答案 2 :(得分:0)
您的代码没有问题。它确实以您想要的方式打印。或者,您可以这样做:
printf("%04x",a);
答案 3 :(得分:0)
您可以使用以下代码段:
#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个位置打印十进制和十六进制数字,填充为零。