Как преобразовать массив байтов в шестнадцатеричную строку на языке C?

У меня есть:

uint8 buf[] = {0, 1, 10, 11};

Я хочу преобразовать массив байтов в строку, чтобы я мог распечатать строку с помощью printf:

printf("%s\n", str);

и get (двоеточия не нужны):

"00:01:0A:0B"

Любая помощь будет принята с благодарностью.

76
задан Duncan Jones 10 October 2017 в 11:00
поделиться

1 ответ

Можно решить с snprintf и malloc.

char c_buff[50];

u8_number_val[] = { 0xbb, 0xcc, 0xdd, 0x0f, 0xef, 0x0f, 0x0e, 0x0d, 0x0c };

char *s_temp = malloc(u8_size * 2 + 1);

for (uint8_t i = 0; i < u8_size; i++)
{
    snprintf(s_temp  + i * 2, 3, "%02x", u8_number_val[i]);
}

snprintf(c_buff, strlen(s_temp)+1, "%s", s_temp );

printf("%s\n",c_buff);

free(s);

: bbccdd0fef0f0e0d0c

0
ответ дан 24 November 2019 в 11:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: