【发布时间】:2014-12-07 15:39:43
【问题描述】:
我需要使用boost::crc_optimal,它计算数组(字符?)的 crc。 使用示例:
// This is "123456789" in ASCII
unsigned char const data[] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 };
std::size_t const data_len = sizeof( data ) / sizeof( data[0] );
// The expected CRC for the given data
boost::uint16_t const expected = 0x29B1;
boost::crc_optimal<16, 0x1021, 0xFFFF, 0, false, false> crc_ccitt2;
crc_ccitt2 = std::for_each( data, data + data_len, crc_ccitt2 );
assert( crc_ccitt2() == expected );
问题是我正在处理的数据是 0 和 1 的序列。一个具体的例子:
int 数据 [] = {1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0};
如何将 crc_optimal 应用于此序列?
我应该将每个 0 转换为 0x30 并将每个 1 转换为 0x31 吗?在这种情况下,如何将生成的 crc 恢复为二进制形式?
谢谢。
编辑:将数组类型从 float 更改为 int,因为这不是必不可少的部分。 看起来挑战在于我正在使用长度不是 8 的倍数的数组。
【问题讨论】:
-
为什么要浮动?!请使用 char 或其他类似 int 的东西。您可以将每 8 个数据元素转换为 1 个字节...
-
@deviantfan 谢谢,看来这是要走的路