Sobes.tech
Junior — Middle

Kādiem veidiem jūs zināt objektu pārvēršanu bitu virkā vai citā formātā pārraidīšanai vai glabāšanai?

sobes.tech AI

Atbilde no AI

Objektu pārvēršana par baitu secību vai citu formātu pārraidei vai glabāšanai saucas serializācija. C/C++ valodā tam izmanto vairākas metodes:

  • Roku serializācija: pašu ierakstīt struktūras vai klases laukus buferā, ņemot vērā izlīdzinājumu un baitu kārtību.
  • Standarta funkciju izmantošana: piemēram, memcpy, kopējot datus uz baitu masīvu.
  • Binārie formāti: piemēram, Protocol Buffers, FlatBuffers, kas nodrošina ērtas API serializācijai un deserializācijai.
  • Teksta formāti: JSON, XML — objekta pārvēršana uz teksta reprezentāciju.

Piemērs vienkāršas roku serializācijas struktūras 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));
}

Svarīgi ņemt vērā baitu kārtību (endianess) un izlīdzinājumu, pārraidot starp dažādām sistēmām.