Преобразование данных в 7 бит вместо 1 байта в C - PullRequest
0 голосов
/ 15 июня 2019

У меня есть связь между главным и подчиненным узлами, где сообщение выглядит следующим образом:

[начало заголовка 2 байта] [полезная нагрузка до 11 байтов] [crc 1 байта] [заголовок 2 байтовend]

Теперь может возникнуть проблема, когда в полезной нагрузке 2 байта конца заголовка включены в один и тот же порядок.CRC предотвратит ошибку, но эта команда никогда не будет выполнена.Так или иначе, мне нужно исключить разделители заголовка из полезной нагрузки, по крайней мере, два конечных разделителя, но я не понимаю, как на самом деле я могу добиться этого эффективным способом.Моей первой попыткой было использование 7 бит вместо 8 бит, но потом я не могу создать uint32_t, uint64_t.

Есть идеи, как мне решить эту проблему?

1 Ответ

0 голосов
/ 17 июня 2019

Ну, вы можете обработать конечные биты, появляющиеся в полезной нагрузке, следующим методом

В заголовке, предшествующем полезной нагрузке, добавьте поле для длины полезной нагрузки, если она еще не существует, чтобы конечные биты, обнаруженные до ее игнорирования. В качестве альтернативы вы можете убедиться, что полезная нагрузка всегда имеет длину 11 байт (используя фиктивные нули, как предложено @Scheff), если в заголовке больше нет места для размещения в поле длины.

...