Sobes.tech
Junior — Middle

Milyen módszereket ismersz az objektumok bájt-sorozattá vagy más formátummá alakítására továbbítás vagy tárolás céljából?

sobes.tech MI

Válasz az MI-től

Objektumok bájtok vagy más formátumba történő átalakítása átalakításnak nevezik. C/C++-ban több módszert használnak:

  • Kézi serializálás: saját maga írja be egy struktúra vagy osztály mezőit egy pufferbe, figyelembe véve az igazítást és a bájtok sorrendjét.
  • Standard függvények használata: például memcpy a adatok másolására bájt tömbbe.
  • Bináris formátumok: például Protocol Buffers, FlatBuffers, amelyek kényelmes API-kat kínálnak a serializáláshoz és deserializáláshoz.
  • Szöveges formátumok: JSON, XML — az objektum szöveges reprezentációvá alakítása.

Egyszerű kézi szerializálási példa C++-ban:

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));
}

Fontos figyelembe venni a bájtok sorrendjét (endianess) és az igazítást, amikor különböző rendszerek között történik az adatátvitel.