CRC校验c++语言代码
时间: 2023-10-09 07:10:31 浏览: 161
以下是一个简单的CRC校验的C++代码示例:
```cpp
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <cstring>
using namespace std;
const uint16_t POLY = 0x1021; // CRC-CCITT polynomial
const uint16_t INIT = 0xFFFF; // Initial value
const uint16_t XOR_OUT = 0xFFFF; // Final XOR value
uint16_t crc_ccitt(uint8_t *data, size_t length) {
uint16_t crc = INIT;
for (size_t i = 0; i < length; i++) {
crc ^= uint16_t(data[i]) << 8;
for (size_t j = 0; j < 8; j++) {
if (crc & 0x8000) {
crc = (crc << 1) ^ POLY;
} else {
crc <<= 1;
}
}
}
crc ^= XOR_OUT;
return crc;
}
int main() {
uint8_t data[] = { 0x01, 0x02, 0x03, 0x04 };
uint16_t crc = crc_ccitt(data, sizeof(data));
stringstream ss;
ss << hex << uppercase << setfill('0') << setw(4) << crc;
string crc_str = ss.str();
cout << "CRC: " << crc_str << endl;
return 0;
}
```
这个代码使用CRC-CCITT多项式计算给定数据的CRC校验值,并将它以16进制字符串的形式输出到控制台。你可以自己替换data数组的值并运行程序,看看它输出的CRC校验值是否正确。
阅读全文