Junior — Middle
Akými spôsobmi poznáš prevod objektov na sekvenciu bajtov alebo iný formát na prenos alebo uloženie?
sobes.tech AI
Odpoveď od AI
Prevod objektov do sekvencie bajtov alebo iný formát na prenos alebo uloženie sa nazýva serializácia. V jazyku C/C++ sa na tento účel používajú rôzne metódy:
- Ručná serializácia: ručne zapisovať polia štruktúry alebo triedy do bufferu, pričom sa zohľadňuje zarovnanie a poradie bajtov.
- Použitie štandardných funkcií: napríklad
memcpyna kopírovanie dát do poľa bajtov. - Binárne formáty: napríklad Protocol Buffers, FlatBuffers, ktoré poskytujú pohodlné API na serializáciu a deserializáciu.
- Textové formáty: JSON, XML — prevod objektu na reťazcové zobrazenie.
Príklad jednoduchého ručného serializačného príkladu štruktúry v 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));
}
Dôležité je brať do úvahy poradie bajtov (endianess) a zarovnanie pri prenose medzi rôznymi systémami.