2017-02-06 3 views
0

Можно ли прямо преобразовать целое число в шестнадцатеричное число следующим образом?Формат десятичной строки гекса

Integer Value = 145635 

hexa decimal value (4 bytes) = 0x000238E3 

<0x00><0x02><0x38><0xE3> 

Я пробовал с% x. Но это не работает для меня.
Может ли кто-нибудь помочь мне по этому вопросу?

+4

Пожалуйста, обеспечивают [MCVE] (http://stackoverflow.com/help/mcve), ожидаемые и реальные выходы , которые демонстрируют вашу проблему. Кроме того, что именно вы подразумеваете под «преобразовать в шестнадцатеричный»? Вы хотите преобразовать 'int' в некоторую строку, которая содержит целое число в шестнадцатеричном формате? – yeputons

+4

«Но это мне не помогает». «Почему? – alk

ответ

2

Вы можете получить выход с <..>, окружающим каждый байт, по крайней мере одним printf -представлением следующим образом. Обратите внимание, что тип данных без знака, который лучше в сочетании с шестигранной и с битовыми операторов сдвига:

unsigned int val = 145635; 
// "ordinary" printf 
printf("%08X\n", val);  

// printf per byte: 
printf("<%02X><%02X><%02X><%02X>\n", 
     val >> 24, 
     (val&0x00ff0000) >> 16, 
     (val&0x0000ff00) >> 8, 
     val&0x000000ff); 
+0

'% 02x' ---->'% 02X' для достижения желаемого результата – LPs

+0

@LPs: справа, спасибо. –

+0

Плюс один, но не уверен, что это то, чего фактически хочет ОП. –

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