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,
memcpypara 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.