2

我是 CRC、boost 和更多的 Java 开发人员。我正在尝试使用 crc.hpp boost 库创建一个仅基于两位计算的 6 位 crc。首先这可能吗?

似乎理论 CRC 计算机可用于处理特定数量的位,但我不清楚如何指定 6 位结果。请帮忙。

4

2 回答 2

3

假设您的输入基于 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());

不过,您仍然需要弄清楚最初的余数应该是多少。

于 2013-05-01T17:01:29.050 回答
3

这应该只是一个最大化四个字节值之间的汉明距离的自定义代码。这将是一个由 0..3 中的两个位索引的四个 8 位值的表。

使四个值中任意两个之间的最小汉明距离最大化的一组值(有 280 个这样的组)是:0x00, 0x4f, 0xb3, 0xfc。最小汉明距离为 5。这些值的高两位是按顺序排列的两位索引。

于 2013-05-01T18:51:55.467 回答