结构体数组计算crc
时间: 2023-10-25 12:11:11 浏览: 199
crc.zip_crc_crc 计算
计算CRC校验码的方法有很多种,常见的有查表法和直接计算法。这里给出一个使用直接计算法计算结构体数组CRC校验码的示例代码:
```c
#include <stdio.h>
#include <stdint.h>
typedef struct {
uint8_t id;
uint16_t value;
} Data;
uint16_t crc16(uint8_t *data, int len) {
uint16_t crc = 0xFFFF;
for (int i = 0; i < len; i++) {
crc ^= data[i];
for (int j = 0; j < 8; j++) {
if (crc & 0x0001) {
crc = (crc >> 1) ^ 0xA001;
} else {
crc = crc >> 1;
}
}
}
return crc;
}
int main() {
Data array[] = {{1, 100}, {2, 200}, {3, 300}};
int len = sizeof(array) / sizeof(Data);
uint16_t crc = crc16((uint8_t *)array, len * sizeof(Data));
printf("CRC: %04X\n", crc);
return 0;
}
```
在这个示例代码中,我们定义了一个结构体`Data`,其中包含一个`id`和一个`value`。我们将多个`Data`结构体组成一个数组`array`,然后将整个数组作为一个字节数组传入`crc16`函数中计算CRC校验码。最后输出计算得到的CRC校验码。
阅读全文