Junior — Middle
Шумо кадом усулҳоро медонед барои табдил додани объектҳо ба пайдарпайии байт ё формати дигар барои интиқол ё нигоҳдорӣ?
sobes.tech AI
Ҷавоб аз AI
Трансформатсияи объектҳо ба пайдарпайии байт ё формати дигар барои интиқол ё нигоҳдорӣ номида мешавад сериализатсия. Дар C/C++ барои ин чанд усул истифода мешаванд:
- Сериализатсияи дастӣ: навиштани худи майдонҳои структура ё синф ба буфер, бо дарназардошти ҳамоҳангсозӣ ва тартиби байтҳо.
- Истифодаи функсияҳои стандартӣ: масалан,
memcpyбарои нусхабардории маълумот ба массиви байтҳо. - Форматҳои бинарӣ: масалан, Protocol Buffers, FlatBuffers, ки API-ҳои қулай барои сериализатсия ва десериализатсия пешниҳод мекунанд.
- Форматҳои матнӣ: JSON, XML — табдил додани объект ба намоиши матнӣ.
Масалан, намунаи соддаи сериализатсияи дастӣ барои структура дар 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));
}
Муҳим аст, ки тартиби байтҳо (endianess) ва ҳамоҳангсозиро дар вақти интиқол байни системаҳое, ки фарқ мекунанд, ба назар гирифт.