2013-12-18 4 views
0

У меня есть char *, заполненный байтами, например 0x01 0x02 0xff. Мне нужно сделать эти байты и напечатать в человеко-читаемом шестнадцатеричном формате, например "0102ff". Каков наилучший способ сделать это?Преобразование из двоичной строки в шестую строку

+1

(http://en.cppreference.com/w/c/io/fprintf) – user694733

+0

Что вы пробовали? Что не сработало? Пожалуйста, покажите нам, что вы провели какое-то исследование, по крайней мере. –

+0

Просьба «наилучшим образом» - это означает, что «ответы на этот вопрос будут иметь тенденцию почти полностью основываться на мнениях, а не на фактах, ссылках или конкретном опыте». – usr2564301

ответ

1
int main() 
{ 
char *p = "12345"; 
    // or with non string data. -> char p[5] = { 0x00, 0x56, 0x2C, 0x7a, 0x88 }; 
int i; 

for(i = 0; i < 5; i++) 
    printf("%02x ", p[i]); 

printf("\n"); 

return 0; 
} 
0

Применение

for (i=0; i<sizeof(my_array);i++) 
    printf("%hhx", (unsigned char) my_array[i]) 

где 'чч' означает символ без знака, а 'х' означает шестнадцатеричное, в выражении "% ННХ.

источник: [. Используйте стандартные функции библиотеки C] http://www.cplusplus.com/reference/cstdio/printf/

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