int num = Int32.Parse(byteDateLine[3].ToString("X2") + byteDateLine[4].ToString("X2"), System.Globalization.NumberStyles.HexNumber);//多个字节转int
//CRC校验
public static bool CRCCalc(byte[] data)
{
try
{
if (Convert.ToInt32(data[0]) == 20 && Convert.ToInt32(data[1]) == 3 && Convert.ToInt32(data[2]) == 2)
{
//计算并填写CRC校验码
byte[] crcbuf = new byte[data.Length - 2];
Buffer.BlockCopy(data, 0, crcbuf, 0, data.Length - 2);
int crc = 0xffff;
int len = crcbuf.Length;
for (int n = 0; n < len; n++)
{
byte i;
crc = crc ^ crcbuf[n];
for (i = 0; i < 8; i++)
{
int TT;
TT = crc & 1;
crc = crc >> 1;
crc = crc & 0x7fff;
if (TT == 1)
{
crc = crc ^ 0xa001;
}
crc = crc & 0xffff;
}
}
string[] redata = new string[2];
redata[1] = Convert.ToString((byte)((crc >> 8) & 0xff), 16).ToUpper();
redata[0] = Convert.ToString((byte)((crc & 0xff)), 16).ToUpper();
if (redata[0] == (data[data.Length - 2]).ToString("X2").ToUpper() && redata[1] == (data[data.Length - 1]).ToString("X2").ToUpper())
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
catch (Exception)
{
return false;
}
}
C# crc16位校验和多个字节组成int
猜你喜欢
转载自blog.csdn.net/qq_38341160/article/details/121100854
今日推荐
周排行