使用boost创建一个6位crc

时间:2013-05-01 16:48:05

标签: c++ boost crc

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

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

2 个答案:

答案 0 :(得分:3)

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

尽管如此,你仍然需要弄清楚初始余数应该是什么。

答案 1 :(得分:3)

这应该是一个自定义代码,可以最大化四个字节值之间的汉明距离。它将是一个由4位8位值组成的表,由两位作为0..3中的数字索引。

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