Sobes.tech
Junior — Middle

Quelles méthodes connaissez-vous pour convertir des objets en une séquence d'octets ou dans un autre format pour la transmission ou le stockage?

sobes.tech IA

Réponse de l'IA

La conversion d'objets en une séquence d'octets ou un autre format pour la transmission ou le stockage s'appelle la sérialisation. En C/C++, plusieurs méthodes sont utilisées :

  • Sérialisation manuelle : écrire manuellement les champs d'une structure ou d'une classe dans un tampon, en tenant compte de l'alignement et de l'ordre des octets.
  • Utilisation de fonctions standard : par exemple, memcpy pour copier des données dans un tableau d'octets.
  • Formats binaires : par exemple, Protocol Buffers, FlatBuffers, qui offrent des API pratiques pour la sérialisation et la désérialisation.
  • Formats textuels : JSON, XML — convertir un objet en une représentation sous forme de chaîne.

Exemple de sérialisation manuelle simple d'une structure en C++ :

struct Point {
    int x;
    int y;
};

void serialize(const Point& p, char* buffer) {
    memcpy(buffer, &p.x, sizeof(int));
    memcpy(buffer + sizeof(int), &p.y, sizeof(int));
}

void deserialize(const char* buffer, Point& p) {
    memcpy(&p.x, buffer, sizeof(int));
    memcpy(&p.y, buffer + sizeof(int), sizeof(int));
}

Il est important de prendre en compte l'ordre des octets (endianess) et l'alignement lors de la transmission entre différents systèmes.