Как отобразить шестнадцатеричные числа в 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.
Спасибо.
Ответы
Ответ 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 местах с нулевым заполнением.