我是CRC的新手,还有更多的java开发人员。我正在尝试使用crc.hpp boost库创建一个仅基于两位计算的6位crc。首先是可能的吗?
似乎理论CRC计算机可用于处理特定数量的位,但是我不清楚如何指定6位结果。请帮助。
答案 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.这些值的高两位是按顺序的两位索引。