Создание 6-битной CRC с использованием boost

Я новичок в CRC, Boost и больше Java-разработчик в этом отношении. Я пытаюсь использовать библиотеку надстройки crc.hpp для создания 6-битной CRC, рассчитанной на основе только двух бит. Во-первых это возможно?

Кажется, что теоретический компьютер CRC может использоваться для обработки определенного количества битов, однако мне неясно, как указать 6-битный результат. Помогите, пожалуйста.

2

Решение

Предполагая, что ваш ввод основан на 2 фактических битах, а не на двух байтах, это должно работать:

const int initial_remainder = 0xBAADF00D;

unsigned char input = 0x3;

boost::crc_basic<6> checksum(initial_remainder);
checksum.process_bits(input, 2);

printf("%i", checksum.checksum());

Вы все еще должны выяснить, каким должен быть начальный остаток.

3

Другие решения

Это должен быть просто пользовательский код, который максимизирует расстояние Хемминга между четырьмя байтовыми значениями. Это будет таблица из четырех 8-битных значений, проиндексированных двумя битами как число в 0..3.

Набор значений (существует 280 таких наборов), который максимизирует минимальное расстояние Хэмминга между любыми двумя из четырех значений: 0x00, 0x4f, 0xb3, 0xfc, Минимальное расстояние Хэмминга — 5. Старшие два бита этих значений — это двухбитный индекс по порядку.

3

По вопросам рекламы [email protected]