2014-10-01 2 views
-4

Я хочу преобразовать шестнадцатеричное значение в строку в c. Пример:Covert Hex value to string

a[4] = {0x34, 0x31, 0xF5, 0x43} 

это необходимо преобразовать в строку

b[8] = {3431F543} 
+7

Полезно знать ... – Maroun

+5

[Поиск и исследования.] (Http://stackoverflow.com/help/how-to-ask) – ikh

+1

Я думаю, что 'sprintf' поможет. –

ответ

1

решение Sprintf DevSolar является хорошо и легко. Но я придумал более оптимизированную, взломанную версию.

void convert_hex_4b_to_string(char buf[9], int ar[4]) 
{ 
    static const char tbl[] = "ABCDEF"; 
    buf[0] = tbl[((unsigned)ar[0] >> 4) & 0x0f]; 
    buf[1] = tbl[((unsigned)ar[0]) & 0x0f]; 
    buf[2] = tbl[((unsigned)ar[1] >> 4) & 0x0f]; 
    buf[3] = tbl[((unsigned)ar[1]) & 0x0f]; 
    buf[4] = tbl[((unsigned)ar[2] >> 4) & 0x0f]; 
    buf[5] = tbl[((unsigned)ar[2]) & 0x0f]; 
    buf[6] = tbl[((unsigned)ar[3] >> 4) & 0x0f]; 
    buf[7] = tbl[((unsigned)ar[3]) & 0x0f]; 
    buf[8] = '\0'; 
} 

... при условии, что все целые числа меньше 0x100.

(live example)