Как преобразовать двоичную в шестнадцатеричную строку в C / Glib? - PullRequest
1 голос
/ 22 сентября 2011

Существует ли распространенный способ или хороший общедоступный код для преобразования двоичного кода (т.е. байтового массива или блока памяти) в шестнадцатеричную строку?У меня есть несколько приложений, которые обрабатывают ключи шифрования и контрольные суммы, и мне нужно много использовать эту функцию.Я написал для этого собственное «быстрое и грязное» решение, но оно работает только с бинарными объектами фиксированного размера, и я ищу что-то более универсальное.Это кажется довольно обыденной задачей, и я уверен, что для этого должен быть какой-то код или библиотеки.Может кто-нибудь указать мне правильное направление, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 22 сентября 2011

Как то так?

void print_hex(const char * buffer, size_t size)
{
    for (size_t i = 0; i < size; i++)
        printf("%02x", buffer[i]);
}
1 голос
/ 23 сентября 2011

Спасибо всем за вашу помощь. Вот как получился окончательный код в glib-записи:

gchar *
print_to_hex (gpointer buffer, gsize buffer_length) {
    gpointer ret = g_malloc (buffer_length * 2 + 1);
    gsize i;
    for (i = 0; i < buffer_length; i++) {
        g_snprintf ((gchar *) (ret + i * 2), 3, "%02x", (guint) (*((guint8 *) (buffer + i))));
    }
    return ret;
}
...