2013-05-04 2 views
0

Я хочу знать, как печатать полное целочисленное значение с нолем и только в C.Как распечатать 32-битное значение?

И я в пространстве ядра, хочу напечатать некоторые значения в модуле ядра.

Подобно этому, если a это 32-битовое целое число, то

int a = 14

, то выход будет как этот

value of a = 0x0000000e

в гекса-десятичной.

Заранее спасибо.

+1

Обратите внимание: вы будете использовать '0000000E', если используете'% 08X' и '0000000e', если используете'% 08x'. Big X делает большой ABCDEF, а маленький x делает немного abcdef. Я предпочитаю стиль шапки. –

ответ

12

Поместите 0 в формате:

printf("value of a = 0x%08x", a); 

От printf(3) man page:

'0'(ноль)

Нулевой отступы. Для всех конверсий, кроме n, преобразованное значение заполняется слева нулями, а , чем пробелы. Если точность дается с числовым преобразования (d, i, o, u, i, x и X), флаг 0 игнорируется.

Ничего подобного документации, чтобы отвечать на вопросы для вас - по крайней мере, если документация хороша.

+0

Это также работает с printk? – goodies

+2

Да, работает с printk –

+1

... и если документация хороша, это скажет вам, что соответствует * unsigned int *, и «Если какой-либо аргумент не правильный тип для соответствующей спецификации преобразования, поведение не определено. " (§7.21.6.1p9 от n1570.pdf) ... – Sebivor

1
#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    int a = 14; 

    printf("value of a = 0x%08x\n", a); 

    return 0; 
} 
Смежные вопросы