Junior — Middle
Koje metode poznaješ za pretvaranje objekata u niz bajtova ili drugi format za prenos ili skladištenje?
sobes.tech АИ
Одговор од АИ
Pretvaranje objekata u niz bajtova ili drugi format za prenos ili skladištenje naziva se serializacija. U C/C++ za to se koriste različite metode:
- Ručno serijalizovanje: ručno zapisivanje polja strukture ili klase u bafer, uzimajući u obzir poravnanje i redosled bajtova.
- Korišćenje standardnih funkcija: na primer,
memcpyza kopiranje podataka u niz bajtova. - Binarni formati: na primer, Protocol Buffers, FlatBuffers, koji pružaju zgodne API-je za serijalizaciju i deserializaciju.
- Tekstualni formati: JSON, XML — pretvaranje objekta u tekstualni prikaz.
Primer jednostavnog ručnog serijalizovanja strukture u 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));
}
Važno je uzeti u obzir redosled bajtova (endianess) i poravnanje prilikom prenosa između različitih sistema.