如何在C / glib中将二进制转换为十六进制字符串?

时间:2011-09-22 17:40:56

标签: c glib

是否存在将二进制(即字节数组或内存块)转换为十六进制字符串的通用方法或良好的公共域代码?我有几个处理加密密钥和校验和的应用程序,我需要使用这个功能很多。我为此编写了自己的“快速而肮脏”的解决方案,但它只适用于固定大小的二进制对象,我正在寻找更通用的东西。这似乎是非常平凡的任务,我敢肯定应该有一些代码或库。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

这样的东西?

void print_hex(const char * buffer, size_t size)
{
    for (size_t i = 0; i < size; i++)
        printf("%02x", buffer[i]);
}

答案 1 :(得分:1)

感谢大家的帮助。以下是最终代码以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;
}