Sobes.tech
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. memcpy do 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.