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

问题描述 投票:0回答:5

我有一个数字列表如下:

0、16、32、48 ...

我需要将这些数字以十六进制形式输出为:

0000,0010,0020,0030,0040 ...

我已经尝试过解决方案,例如:

printf("%.4x",a); // where a is an integer

但我得到的结果是:

0000, 0001, 0002, 0003, 0004 ...

我想我离那里很近。任何人都可以帮忙,因为我不是 非常擅长 C.

printf

谢谢。

c format integer printf hex
5个回答
132
投票

尝试:

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

更多在这里


9
投票

我这样使用它:

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

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


1
投票

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

printf("%04x",a);

1
投票

您可以使用以下代码片段:

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


0
投票
            #include &lt;stdio.h&gt;

            int main() {
                int a[5] = {22, 33, 44, 55, 66};
                int *ptr = NULL;

                ptr = a;  /* point to the first array element */
                printf("%d  %x\n", *ptr, ptr);  /* 22 */
                ptr++;
                printf("%d  %x\n", *ptr, ptr);  /* 33 */
                ptr += 3;
                printf("%d  %x\n", *ptr, ptr);  /* 66 */
                    ptr--;
                printf("%d  %x\n", *ptr, ptr);  /* 55 */
                ptr -= 2;
                printf("%d  %x\n", *ptr, ptr);  /* 33 */

                     return 0;
                }
    
© www.soinside.com 2019 - 2024. All rights reserved.