VLCPlay/CRC.cs
(完整代码) 1KBusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace VLCPlay
{
public class CRC
{
public static byte[] CRC16(byte[] sendBuff)//CRC校验
{
int i1 = 0;
byte CRC16Lo, CRC16Hi;
byte CL, CH;
byte SaveHi, SaveLo;
int Flag = 0;
byte[] ReturnData = new byte[2];
CRC16Lo = 0xFF;
CRC16Hi = 0xFF;
CL = 0x1;
CH = 0xA0;
for (i1 = 0; i1 < 6; i1++)
{
CRC16Lo = (byte)((CRC16Lo) ^ (sendBuff[i1]));//每一个数据与CRC寄存器进行异或
for (Flag = 0; Flag <= 7; Flag++)
{
SaveHi = CRC16Hi;
SaveLo = CRC16Lo;
CRC16Hi = (byte)(CRC16Hi >> 1); //高位右移一位
CRC16Lo = (byte)(CRC16Lo >> 1); //低位右移一位
if ((SaveHi & 0x1) == 0x1) //如果高位字节最后一位为1
{
CRC16Lo = (byte)(CRC16Lo | 0x80); //则低位字节右移后前面补1
}
if ((SaveLo & 0x1) == 0x1) //如果LSB为1,则与多项式码进行异或
{
CRC16Hi = (byte)(CRC16Hi ^ CH);
CRC16Lo = (byte)(CRC16Lo ^ CL);
}
}
}
ReturnData[0] = CRC16Hi;//CRC高位
ReturnData[1] = CRC16Lo;//CRC低位
return ReturnData;
}
}
}
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
