ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
23 декабря
976536 Топик полностью
Evgeny_CDАрхитектор (05.02.2020 16:32, просмотров: 412) ответил Evgeny_CD на [Универсальный код для передачи по байтовым и более широким каналам связи. Часть 1] Итог многих лет моих размышлений.
Поясняю замысел. Я описал именно кодирование для выделение элементов протокола, т.е. канальный уровень. Как пример https://ru.wikiped …0%B2%D0%B5%D0%BD%D1%8C Описание кусков протокола я привел в качестве обоснования списка того, что надо кодировать. Получилось убого, согласен. Замысел. Пусть нам надо передать 56 бит. Ну стоим мы на асфальте и лыжи не едут :) 7 символов - выделили по 7 младших бит, старший 0, положили в 7 байт. 8й символ. Выделили 7 младших бит. Сдвинули, наложили маску, OR с байтом 0 из предыдущего пункта. Снова сдвинули наложили, OR с байтом 1 и т.д. Получили 7 8битных байтов. Теперь мы хотим смазать лыжи. Передаем два символа: 1 из 16 - младшие 4 бита, 1 из 16 - старшие. Сложили, положили в 8-й байт. Ели 8-й байт конструировать из двух 7-битных, то будет не так красиво алоритмически, но да, биты похерятся. С другой стороны - 6 бит будет свободным, можно CRC-5 как в USB применить https://ru.wikiped …%B9_%D0%BA%D0%BE%D0%B4 Декодер основан на таблице 256 двухбайтных слов: -- младший байт - битовое поле, закодированное символом -- старший байт - битовый признак класса, что это за символ. Для экономии можно 7 битные символы обрабатывать без таблицы: проверка старшего бита, маска - готовы информационные биты. Такой способ кодирования эaффективен и для С, и для asm.