Mi è stato consegnato un documento che definisce un insieme di messaggi che vengono trasmessi e ricevuti su un canale di comunicazione seriale. Mi piacerebbe prendere i messaggi in arrivo e deserializzare in oggetti, e serializzare anche i miei messaggi in uscita. La codifica sopra il filo è stabilito e non modificabile, e si compone di vari campi di bit nell'intestazione e payload variabile, ad esempio,Serializzazione e deserializzazione di un campo di bit
class Message{
int msg_num : 7
int dest_addr : 4
bool SRR : 1
bool IDE : 1
int source_addr : 6
//... and so on...
}
ho preso un'occhiata a utilizzare protobufs, ma sembra che il loro metodo varint di codifica stabilito. Ho anche guardato allo boost-serialization, ma basandomi su ciò che ho letto finora, come viene eseguita la codifica non è del tutto chiaro.
Così, alcune domande:
- Posso utilizzare Boost-serializzazione di convertire il mio bytestream agli oggetti?
- Con un obiettivo di non dover rollare le mie routine per la serializzazione (un pasticcio di manutenzione), c'è un meccanismo preferito per portare a termine il mio compito (ad esempio, un archivio boost-serializzazione personalizzato, un altro metodo che non ho scoperto
significa "int msg_num: 7" significa che il campo è un intero a 7 bit ? – grieve
Sì. Il ": num" indica la lunghezza del bitfield – jdt141
Trovo difficile rispondere a questa domanda, poiché viene mostrata solo la rappresentazione compressa ma non gli oggetti messaggio decompresso che si desidera serializzare e deserializzare. –