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,
memcpypentru 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.