校验算法模块算法,直接移植就好
校验算法模块(crc.h/.c)提供常用CRC16/CRC32算法,接口简洁,便于移植。
// crc.h
#ifndef CRC_H
#define CRC_H
#include <stdint.h>
uint16_tcrc16_ccitt(const uint8_t *data, uint32_t len, uint16_t init);
uint32_tcrc32_simple(const uint8_t *data, uint32_t len, uint32_t init);
#endif
// crc.c
#include "crc.h"
uint16_tcrc16_ccitt(const uint8_t *data, uint32_t len, uint16_t init) {
uint16_t crc = init;
for (uint32_t i = 0; i < len; ++i) {
crc ^= (uint16_t)data << 8;
for (int j = 0; j < 8; ++j)
crc = (crc & 0x8000) ? (crc << 1) ^ 0x1021 : (crc << 1);
}
return crc;
}
uint32_tcrc32_simple(const uint8_t *data, uint32_t len, uint32_t init) {
uint32_t crc = init;
for (uint32_t i = 0; i < len; ++i) {
crc ^= data;
for (int j = 0; j < 8; ++j)
crc = (crc & 1) ? (crc >> 1) ^ 0xEDB88320 : (crc >> 1);
}
return crc;
}
校验算法模块算法直接移植很实用 可以直接移植使用 校验算法模块算法,直接移植就好 校验算法模块算法 很不错的校验算法模块算法 校验算法模块算法,直接移植就好 很不错的校验算法模块算法
页:
[1]