Си: Конвертация uint8_t в char

Рейтинг: 0Ответов: 2Опубликовано: 23.04.2015

Есть некий массив uint8_t. Например

uint8_t myu[4] = {0xff, 0x068, 0xc5, 0x8f};

Этот массив нужно конвертировать в строку, чтобы получилось ff68c58f. Не понимаю как... printf("%02x", myu[i]) для каждого элемента массива выводит на экран нужный результат... Но нужно это не вывести на экран, а передать в переменную

Ответы

▲ 4Принят

Все очень просто:

  uint8_t myu[4] = {0xff, 0x068, 0xc5, 0x8f};
  int i, sz = sizeof(myu) / sizeof(myu[0]);
  char res[2 * sz + 1];

  for (i = 0; i < sz; i++)
    sprintf(res + 2 * i, "%02x", myu[i]);

Если что-то непонятно -- спрашивайте.

▲ 2
printf("%02X:%02X:%02X:%02X", myu[0], myu[1], myu[2], myu[3]);

Или

int i;
for (i = 0; i < x; i++)
{
    printf("%02X", myu[i]);
}
printf("\n");

См. https://stackoverflow.com/a/6357065/1159507