Comment convertir une chaîne binary en chaîne hexadécimale en C / Glib?

Existe-t-il un moyen commun ou un code de domaine public correct permettant de convertir des binarys (un tableau d’octets ou un bloc de mémoire) en chaîne hexadécimale? J’ai plusieurs applications qui gèrent les clés de chiffrement et les sums de contrôle et j’ai besoin de beaucoup utiliser cette fonction. J’ai écrit ma propre solution “rapide et sale” pour cela, mais cela ne fonctionne qu’avec des objects binarys de taille fixe et je cherche quelque chose de plus universel. Cela semble une tâche assez banale et je suis sûr qu’il devrait y avoir du code ou des bibliothèques pour cela. Quelqu’un pourrait-il me diriger dans la bonne direction, s’il vous plaît?

Quelque chose comme ça?

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

Merci à tous pour votre aide. Voici comment le code final s’est avéré dans la notation 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; }