Junior — Middle
Jakimi metodami znasz konwersję obiektów na ciąg bajtów lub inny format do przesyłania lub przechowywania?
sobes.tech AI
Odpowiedź od AI
Konwersja obiektów na sekwencję bajtów lub inny format do przesyłania lub przechowywania nazywa się serializacją. W C/C++ używa się do tego kilku metod:
- Ręczna serializacja: samodzielne zapisanie pól struktury lub klasy do bufora, uwzględniając wyrównanie i kolejność bajtów.
- Użycie funkcji standardowych: np.
memcpydo kopiowania danych do tablicy bajtów. - Formaty binarne: np. Protocol Buffers, FlatBuffers, które zapewniają wygodne API do serializacji i deserializacji.
- Formaty tekstowe: JSON, XML — konwersja obiektu do reprezentacji tekstowej.
Przykład prostej ręcznej serializacji struktury w 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));
}
Ważne jest uwzględnienie kolejności bajtów (endianess) i wyrównania podczas przesyłania między różnymi systemami.