2016-04-28 3 views
-1

У меня есть код C.Printf Hex Форматирование приводит к неправильному выходу

char a[] = "\x7f\x80"; 
printf("0x%02x\n",a[0]); 
printf("0x%02x",a[1]); 

Он должен печатать,

0x7f 
0x80 

Однако я получаю следующее?

0x7f 
0xffffff80 

Какие изменения я должен сделать, чтобы получить выходной 0x7F0x80?

Спасибо,

+3

'(unsigned char) a [1]' –

+0

Спасибо большое! Я действительно попробовал printf («0x% 02x \ n», (без знака) a [0]). –

+1

Вы также можете сделать '" 0x% 02hhx \ n "'. –

ответ

3

Используйте правильные типы и спецификаторов преобразования:

unsigned char a[] = "\x7f\x80"; 
printf("0x%02hhx\n",a[0]); 
printf("0x%02hhx",a[1]); 

спецификатор преобразования x требует неподписанный типа, и модификатор длины hh используется для unsigned char.

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