没有合适的资源?快使用搜索试试~ 我知道了~
CRC-32,CRC-8校验c++实现.pdf
需积分: 46 10 下载量 168 浏览量
2022-05-03
10:03:16
上传
评论
收藏 136KB PDF 举报
温馨提示
试读
3页
CRC-32,CRC-8校验c++代码实现,直接使用,应用于通信检查
资源推荐
资源详情
资源评论
CRC-32,CRC-8校验c++实现
CRC-8:
UCHAR CRC8(char *buffer)//
校验
{
UCHAR crc = 0;
for (int j = 0; j < sizeof(buffer); j++)
{
crc ^= buffer[j];
for (int i = 0; i < 8; i++)
{
if ((crc & 0x01) != 0)
{
crc >>= 1;
crc ^= 0x8c;
}
else
crc >>= 1;
}
}
return crc;
}
CRC-32: 数据字节数是8的倍数
#include <iostream>
#include <windows.h>
#include <sstream>
using namespace std;
typedef unsigned int uint;
uint POLYNOMIAL = 0xEDB88320;
int have_table = 0;
double pi = 3.14159265359;
uint table[256];
//
⽣成
table
第⼀种⽅法
unsigned int CRC;//int
的⼤⼩是
32
位,作
32
位
CRC
寄存器
unsigned int CRC_32_Table[256];//
⽤来保存
CRC
码表
void GenerateCRC32_Table()
{
for (int i = 0; i<256; ++i)//
⽤
++i
以提⾼效率
{
CRC = i;
for (int j = 0; j<8; ++j)
{
if (CRC & 1)// LSM
为
1
CRC = (CRC >> 1) ^ 0xEDB88320;//
采取反向校验
else //0xEDB88320
就是
CRC-32
多项表达式的
reversed
值
CRC >>= 1;
}
CRC_32_Table[i] = CRC;
}
}
//
第⼆种⽅法
void make_table()
{
int i, j, crc;
have_table = 1;
for (i = 0; i < 256; i++)
for (j = 0, table[i] = i; j < 8; j++)
table[i] = (table[i] >> 1) ^ ((table[i] & 1) ? POLYNOMIAL : 0);
}
资源评论
五条悟
- 粉丝: 260
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功