Мне вручен документ, который определяет набор сообщений, которые передаются и принимаются по последовательному каналу связи. Я хотел бы принимать входящие сообщения и десериализовывать их в объекты, а также сериализовывать и исходящие сообщения. Кодирование по проводам устанавливается и не может быть изменен, и состоит из различных битовых полей в заголовке и различных полезных нагрузок, например,Сериализация и десериализация поля бит
class Message{
int msg_num : 7
int dest_addr : 4
bool SRR : 1
bool IDE : 1
int source_addr : 6
//... and so on...
}
Я посмотрел на использование protobufs, но это, кажется, что их метод varint кодирования является установлено. Я также посмотрел на boost-serialization, но, основываясь на том, что я читал до сих пор, как делается кодировка там, не совсем ясно.
Итак, несколько вопросов:
- Может ли я использовать наддув-сериализацию конвертировать мои потоковый к объектам?
- С целью не, вынуждены сворачивать мои собственные процедуры для сериализации (беспорядок обслуживания), есть ли предпочтительный механизм для выполнения моей задачи (например, собственный архив с форсированной сериализацией, другой метод, который я не обнаружил)
«ИНТ msg_num: 7» Значит ли поле является 7-битное целое ? – grieve
Да. «: Num» указывает длину битового поля – jdt141
Я нахожу, что этот вопрос трудно ответить, поскольку отображается только упакованное представление, но не объекты распакованного сообщения, которые вы хотели бы сериализовать и десериализовать. –