Sobes.tech
Junior — Middle

Kokiais būdais žinote objektų konvertavimą į baitų seką ar kitą formatą perdavimui ar saugojimui?

sobes.tech AI

Atsakymas iš AI

Objektų perkėlimas į baitų seką arba kitą formatą perdavimo ar saugojimo tikslais vadinamas serializacija. C/C++ kalbose naudojama keletas metodų:

  • Rankinė serializacija: patiems įrašyti struktūros ar klasės laukus į buferį, atsižvelgiant į išlyginimą ir baitų tvarką.
  • Naudojant standartines funkcijas: pvz., memcpy, kopijuojant duomenis į baitų masyvą.
  • Binariniai formatai: pvz., Protocol Buffers, FlatBuffers, kurie siūlo patogius API serializacijai ir deserializacijai.
  • Tekstiniai formatai: JSON, XML — objektą paversti į eilutės reprezentaciją.

Pavyzdys paprastos rankinės serializacijos struktūros 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));
}

Svarbu atsižvelgti į baitų tvarką (endianess) ir išlyginimą, perduodant tarp skirtingų sistemų.