Подтвердить что ты не робот

Как отобразить шестнадцатеричные числа в C?

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

0, 16, 32, 48...

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

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

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

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

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

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

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

Спасибо.

4b9b3361

Ответ 1

Try:

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

Подробнее здесь

Ответ 2

Я использую его следующим образом:

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

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

Ответ 3

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

printf("%04x",a);

Ответ 4

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

#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 местах с нулевым заполнением.