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