Se me ha entregado un documento que define un conjunto de mensajes que se transmiten y reciben a través de un canal de comunicaciones en serie. Me gustaría tomar los mensajes entrantes y deserializarlos en objetos, y serializar mis mensajes salientes también. La codificación sobre el alambre se establece y no se puede cambiar, y se compone de varios campos de bits en el encabezado y diferentes cargas útiles, por ejemplo,Serialización y deserialización de un campo de bit
class Message{
int msg_num : 7
int dest_addr : 4
bool SRR : 1
bool IDE : 1
int source_addr : 6
//... and so on...
}
Me tomó un vistazo en el uso de protobufs, pero parece que su método varint de codificación es establecido. También miré boost-serialization, pero en base a lo que he leído hasta ahora, no está del todo claro cómo se realiza la codificación.
Así, algunas preguntas:
- ¿Puedo utilizar la serialización impulso para convertir mi bytestream a objetos?
- con un objetivo de no tener que pasar mis propias rutinas de serialización (un lío de mantenimiento), ¿hay un mecanismo preferido para llevar a cabo mi tarea (por ejemplo, un archivo personalizado de refuerzo de serialización, otro método que no he descubierto)
significa "int msg_num: 7" significa que el campo es un número entero de 7 bits ? – grieve
Sí. El ": num" indica la longitud del campo de bits – jdt141
Me resulta difícil responder a esta pregunta, ya que solo se muestra la representación empaquetada pero no los objetos de mensaje desempaquetados que desea serializar y deserializar. –