【问题标题】:How to display hexadecimal numbers in C?如何在 C 中显示十六进制数字?
【发布时间】:2011-04-08 14:54:00
【问题描述】:

我有一个数字列表如下:

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("%d: %.4x\n", a, a),我觉得你的a没有你认为的价值。
  • 是的,你是对的。我心不在焉。对不起这个愚蠢的问题......

标签: c format integer printf hex


【解决方案1】:

试试:

printf("%04x",a);
  • 0 - 用左填充数字 零 (0) 而不是空格,其中 指定了填充。
  • 4(宽度)- 最小数量 要打印的字符。如果 要打印的值小于 这个数字,结果是正确的 通过在左侧填充在此宽度内 与填充字符。默认情况下这是 一个空格,但我们使用的前导零 指定零作为填充字符。 即使结果是,该值也不会被截断 更大。
  • x - 十六进制说明符 整数。

更多here

【讨论】:

  • 它的结果是:0000, 0001, 0002, 0003, 0004 ...我需要的是:0000,0010,0020,0030,0040 ...
  • 嗯,真奇怪...我试过了,但总是显示为 0000, 0001, 0002, 0003, 0004(我在 Ubuntu 中使用 Eclipse,gcc...)
  • @tsubasa - 同时将它们打印为十进制整数,以检查您的其余代码是否符合您的想法。
  • 原始的%.4x 格式表示法很好,可以达到与%04x 相同的结果。问题主要是提供给printf() 的数据。
【解决方案2】:

我是这样使用的:

printf("my number is 0x%02X\n",number);
// output: my number is 0x4A

只需将数字“2”更改为您要打印的任意数量的字符;)

【讨论】:

    【解决方案3】:

    您的代码没有问题。它确实以您想要的方式打印。或者,您可以这样做:

    printf("%04x",a);
    

    【讨论】:

      【解决方案4】:

      可以使用下面的sn-p代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-28
        • 2014-05-24
        • 2012-01-04
        • 2013-02-26
        • 2015-06-15
        • 1970-01-01
        • 2011-01-01
        • 2014-03-11
        相关资源
        最近更新 更多