我是 CRC、boost 和更多的 Java 开发人员。我正在尝试使用 crc.hpp boost 库创建一个仅基于两位计算的 6 位 crc。首先这可能吗?
似乎理论 CRC 计算机可用于处理特定数量的位,但我不清楚如何指定 6 位结果。请帮忙。
假设您的输入基于 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());
不过,您仍然需要弄清楚最初的余数应该是多少。
这应该只是一个最大化四个字节值之间的汉明距离的自定义代码。这将是一个由 0..3 中的两个位索引的四个 8 位值的表。
使四个值中任意两个之间的最小汉明距离最大化的一组值(有 280 个这样的组)是:0x00, 0x4f, 0xb3, 0xfc
。最小汉明距离为 5。这些值的高两位是按顺序排列的两位索引。