Как распечатать s_uuid из ext2 суперблока в C

Я создаю переменную для хранения значения s_uuid суперблока. Но у меня возникают проблемы с тем, как напечатать эту переменную, например, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx в этой форме. Я пытался использовать printf в% x и% s, чтобы напечатать мою переменную, но это не работает.

Я хочу знать, как UUID хранит в файловой системе и как я могу напечатать его в консоли вместо неправильной кодировки.

1 ответ

Решение

S_uuid определен в суперблоке как: u8 s_uuid[16];

Чтобы распечатать это на консоли в вышеуказанном формате:

uint8_t s_uuid[16] = {0xf3, 0x58, 0x6b, 0xaf, 0xb5, 0xaa, 0x49, 0xb5, 
                      0x8d, 0x6c, 0x05, 0x69, 0x28, 0x4c, 0x63, 0x9f};

printf("%02x%02x%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n",
    s_uuid[0], s_uuid[1], s_uuid[2], s_uuid[3], s_uuid[4], s_uuid[5], s_uuid[6], s_uuid[7], 
    s_uuid[8], s_uuid[9], s_uuid[10], s_uuid[11], s_uuid[12], s_uuid[13], s_uuid[14], s_uuid[15]);
Другие вопросы по тегам