求crc32校验C#源码,能用的哦!跪谢 5

 我来答
不想起名字了2333
2011-11-15 · TA获得超过2447个赞
知道大有可为答主
回答量:1931
采纳率:50%
帮助的人:1863万
展开全部
我有CRC16校验的C#代码:

CRC循环冗余错误校验计算方法&&代码

CRC—16(循环冗余错误校验)生成CRC—16校验字节的步骤如下:
(1)装入一个16位寄存器,所有数位均为1。
(2)该16位寄存器的高位字节与开始8位字节进行“异或”运算。运算结果放入这个16位寄存器。
(3)把这个16位寄存器向右移1位。
(4a)若向右(标记位)移出的数位是1,则生成多项式1010000000000001和这个寄存器进行“异或”运算。
(4b)若向右移出的数位是0,则返回(3)。
(5)重复(3)和(4),直至移出8位。
(6)另外8位与该16位寄存器进行“异或”运算。
(7)重复(3)—(6),直至该报文所有字节均与16位寄存器进行“异或”运算,并移位8次。
(8)这个16位寄存器的内容即2字节CRC错误校验

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CommPort
{
public class CRC16
{
public CRC16()
{
}
//校验crc16
public static bool check(byte[] buff, int index, int len)
{ //buff是待校验数组,index为起始索引,len为校验长度
//buff是待校验数组,index为起始索引,len为校验长度
uint i, j;
byte h, l;
byte c, d;
h = 0x55;
l = 0xaa;
for (i = (uint)index; i < index + len; i++)
{
h = (byte)(buff[i] ^ h);
for (j = 0; j < 8; j++)
{
c = (byte)(l & 0x80);
l <<= 1;
d = (byte)(h & 0x80);
h <<= 1;
if (c != 0)
h |= 0x01;
if (d != 0)
{
//
h = (byte)(h ^ 0x10);
l = (byte)(l ^ 0x21);
}
}
}
if ((h == 0) && (l == 0))
return true;
else
return false;
}
//计算一个byte数组中指定位置的crc16
public static byte[] cal(byte[] buff, int index, int len)
{
//buff是待校验数组,index为起始索引,len为校验长度
uint i, j;
byte h, l;
byte c, d;
h = 0x55;
l = 0xaa;
for (i = (uint)index; i < index + len; i++)
{
h = (byte)(buff[i] ^ h);
for (j = 0; j < 8; j++)
{
c = (byte)(l & 0x80);
l <<= 1;
d = (byte)(h & 0x80);
h <<= 1;
if (c != 0)
h |= 0x01;
if (d != 0)
{
//
h = (byte)(h ^ 0x10);
l = (byte)(l ^ 0x21);
}
}
}
byte[] resu = new byte[2];
resu[0] = (byte)h;
resu[1] = (byte)l;
return resu;
}
}
}
追问
麻烦问下,我想把FF A0  怎么校验后变成  FF A0  40 38
谢谢了,我新手,比较弱!一定给您高分~~~
追答
帮不了你~~~~~~~~这是计算机网络的知识, 校验的知识早就网的差不多了~~~~~~
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式