Sobes.tech
Junior — Middle

Ce metode cunoști pentru a transforma obiectele în secvențe de octeți sau într-un alt format pentru transmitere sau stocare?

sobes.tech AI

Răspuns de la AI

Conversia obiectelor în secvența de octeți sau alt format pentru transmitere sau stocare se numește serializare. În C/C++, pentru aceasta se folosesc mai multe metode:

  • Serializare manuală: scrierea manuală a câmpurilor unei structuri sau clase într-un buffer, ținând cont de aliniere și ordinea octeților.
  • Utilizarea funcțiilor standard: de exemplu, memcpy pentru copierea datelor într-un array de octeți.
  • Formate binare: de exemplu, Protocol Buffers, FlatBuffers, care oferă API-uri convenabile pentru serializare și deserializare.
  • Formate textuale: JSON, XML — conversia unui obiect într-o reprezentare în șir de caractere.

Exemplu de serializare manuală simplă a unei structuri în 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));
}

Este important să se țină cont de ordinea octeților (endianess) și de aliniere atunci când se face transmiterea între sisteme diferite.