Sobes.tech
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, memcpy za 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.