如何在C中显示十六进制数?

时间:2010-09-06 04:37:40

标签: c format integer printf hex

我有一个数字列表如下:

  

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非常好。

感谢。

4 个答案:

答案 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个位置打印十进制和十六进制数字,填充为零。