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
memcpya 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.