Вопрос или проблема
Я выполнял базовое заполнение битами (согласно правилу добавления 0, если есть 5 последовательных 1-иц). Пример: 11111
становится 111101
. Моя основная проблема заключается в том, как определить, происходит ли заполнение данных или нет, во время удаления заполненных данных. Таким образом, во время удаления заполненных битов, если после 0 идут 4 последовательные 1-цы, я удаляю или пропускаю один бит.
Например: 11111
становится 111101
, и поэтому, когда я удаляю заполненные биты, я удаляю/пропускаю ‘0’ перед четырьмя 1-цами, и я получаю оригинальные данные, которые равны 11111
. Но возможно, что 111101
является оригинальными данными, и приемник получил 111101
. Если я применю ту же логику удаления заполненных битов, я получу неправильный ответ.
Я хочу узнать, какие существуют общепринятые практики для решения этой проблемы.
Ответ или решение
Для определения, является ли данные в битах с добавлением мусора (bit stuffing) или оригинальными, необходимо учитывать несколько ключевых моментов. Общие практики для решения этой проблемы сводятся к соблюдению строгих правил кодирования и декодирования данных, а также правильной интерпретации структуры данных на уровне протокола.
Проверка на наличие битового мусора
-
Правила добавления мусора: Изучите конкретные правила вашего схемы битового мусора. Например, в вашем случае при обнаружении 5 последовательных единиц (1) добавляется 0 (ноль). Это правило должно быть четко прописано и следовать ему при кодировании.
-
Структура данных: Используйте определенные маркеры или заголовки, которые помогут идентифицировать начало и конец полезной нагрузки. Эти маркеры могут служить индикаторами, показывающими, где данные начинаются и заканчиваются, что также может помочь избежать неправильной интерпретации.
- Контрольная сумма или CRC: Применение контрольных сумм или циклических избыточных проверок (CRC) может помочь в обнаружении ошибок при передаче данных. Если калькуляция контрольной суммы при декодировании не совпадает с изначально присланной, это может указывать на то, что были искажены или неправильно интерпретированы данные.
Практика де-стуфинга
При декодировании данных необходимо следовать следующим шагам:
-
Считывание данных: При считывании данных анализируйте каждую последовательность 1 и 0. При нахождении последовательности из 4 единиц (1) и текущего бита равного 0, вы должны учитывать, что это может быть добавление мусора.
-
Сохранение контекста: Чтобы избежать неправильного удаления нуля перед 4 единицами, можно сохранять контекст предыдущих битов. Например, если перед текущими 4 единицами (1) есть только один ноль, это указывает на то, что вам следует сохранить текущую последовательность нетронутой.
- Обработка исключений: Создавайте логику, которая будет позволять вам определять ситуации, когда нахождение нуля перед 4 единицами (1) может выглядеть нестандартно. В таких случаях, возможно, стоит просто оставить это основание и не удалять бит.
Заключение
Для успешного декодирования данных с возможным битовым мусором важно использовать комбинацию подходящих методов, включая строгие правила добавления мусора, хранение контекста и применение контрольных сумм. Внедрение таких механизмов значительно повысит вероятность корректной интерпретации данных на принимающей стороне.