Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何计算9位或17位的CRC?_C++_Embedded_Microcontroller_Spi_Crc - Fatal编程技术网

C++ 如何计算9位或17位的CRC?

C++ 如何计算9位或17位的CRC?,c++,embedded,microcontroller,spi,crc,C++,Embedded,Microcontroller,Spi,Crc,我正在使用的设备需要我(或库)计算17位字上的CRC-7 这个字可能是:1010 1010 0101 0101 1(17位) 大多数库只将整个字节作为输入。有没有办法,idk,改变这个词,使其与标准计算方法兼容 提前谢谢 这可能取决于库。现在我正在使用boost的crc。我可以很容易地告诉它使用CRC-7。但是它的输入是一个uint8_t数组,所以我只能在字节级别工作。它产生的CRC不符合设备预期的CRC(显然,因为boost在24位上工作,而设备在17位上计算)。为什么不使用填充?如果这用于确

我正在使用的设备需要我(或库)计算17位字上的CRC-7

这个字可能是:1010 1010 0101 0101 1(17位)

大多数库只将整个字节作为输入。有没有办法,idk,改变这个词,使其与标准计算方法兼容


提前谢谢

这可能取决于库。现在我正在使用boost的crc。我可以很容易地告诉它使用CRC-7。但是它的输入是一个uint8_t数组,所以我只能在字节级别工作。它产生的CRC不符合设备预期的CRC(显然,因为boost在24位上工作,而设备在17位上计算)。为什么不使用填充?如果这用于确保通信信道上的噪声稳定性,我认为向右(左移)或向左填充到下一个字节边界应该可以。如果设备使用指定的方法,你显然必须使用它。像这样?1010 1010 0101 0101 1(17位)0000 0001 0101 0100 1010 1011(24位加7位填充)这可能取决于库。现在我正在使用boost的crc。我可以很容易地告诉它使用CRC-7。但是它的输入是一个uint8_t数组,所以我只能在字节级别工作。它产生的CRC不符合设备预期的CRC(显然,因为boost在24位上工作,而设备在17位上计算)。为什么不使用填充?如果这用于确保通信信道上的噪声稳定性,我认为向右(左移)或向左填充到下一个字节边界应该可以。如果设备使用指定的方法,你显然必须使用它。像这样?1010 1010 0101 0101 1(17位)0000 0001 0101 0100 1010 1011(24位,带7位填充)