2010-09-06 3 views
39

У меня есть список номеров, как показано ниже:Как отобразить шестнадцатеричные числа в 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.

Спасибо.

+5

Попробуйте 'printf ("% d:% .4x \ n ", a, a)', я думаю, что ваш 'a' не имеет значения, которое, по вашему мнению, имеет. –

+0

Да, вы правы. я отсутствовал. извините за этот глупый вопрос ... – root

ответ

86

Try:

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

Больше here

+0

Это приводит к: 0000, 0001, 0002, 0003, 0004 ... что мне нужно: 0000,0010,0020,0030,0040 ... – root

+0

Это работает для меня. http://www.ideone.com/2VzY1 – codaddict

+0

Хмм, как странно ... Я пробовал, но всегда показываю 0000, 0001, 0002, 0003, 0004 (Я использую Eclipse в Ubuntu, gcc ...) – root

0

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

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

я использовать его как это:

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

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

0

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

#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 местах с нулевой колодки динь.

Смежные вопросы