Sobes.tech
Junior — Middle

Quais métodos você conhece para converter objetos em uma sequência de bytes ou outro formato para transmissão ou armazenamento?

sobes.tech IA

Resposta da IA

A conversão de objetos em uma sequência de bytes ou outro formato para transmissão ou armazenamento é chamada de serialização. Em C/C++, várias técnicas são usadas:

  • Serialização manual: escrever manualmente os campos de uma estrutura ou classe em um buffer, considerando o alinhamento e a ordem dos bytes.
  • Uso de funções padrão: por exemplo, memcpy para copiar dados para um array de bytes.
  • Formatos binários: por exemplo, Protocol Buffers, FlatBuffers, que fornecem APIs convenientes para serialização e desserialização.
  • Formatos de texto: JSON, XML — converter um objeto em uma representação em string.

Exemplo de serialização manual simples de uma estrutura em 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));
}

É importante considerar a ordem dos bytes (endianess) e o alinhamento ao transmitir entre diferentes sistemas.