Как отобразить шестнадцатеричные числа в C? - PullRequest
41 голосов
/ 06 сентября 2010

У меня есть список чисел, как показано ниже:

0, 16, 32, 48 ...

Мне нужно вывести эти числа в шестнадцатеричном виде как:

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

Я пробовал решение, такое как:

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

, но результат, которыйЯ получил это:

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

Я думаю, что я близко там.Кто-нибудь может помочь, так как я не очень хорош в printf в C.

Спасибо.

Ответы [ 4 ]

103 голосов
/ 06 сентября 2010

Попробуйте:

printf("%04x",a);
  • 0 - ставит слева от нуля (0) вместо пробелов, где указывается заполнение.
  • 4 (ширина) - минимальное количество символов для печати.Если значение для печати короче этого числа, результат выравнивается по правому краю в пределах этой ширины, добавляя слева символ вставки.По умолчанию это пробел, но использованный начальный ноль указывает ноль в качестве пэда char.Значение не усекается, даже если результат больше.
  • x - Спецификатор шестнадцатеричного целого числа.

Еще здесь

5 голосов
/ 05 июля 2013

Я использую это так:

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

Просто измените число "2" на любое количество символов, которые вы хотите напечатать;)

0 голосов
/ 01 июня 2016

Вы можете использовать следующий код:

#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 голосов
/ 06 сентября 2010

Ваш код не имеет проблем.Он печатает так, как вы хотите.Кроме того, вы можете сделать это:

printf("%04x",a);
...