各位高手 0xE5,0x1E,0x03,0x00,0x00,
0x05,0x00,0x07,0x45,0x4D,
0x42,0x41,0x4C,0x4C,0x45,
0x00,0x00,0x2B,0x00,0x01,
0x33,0x01,0x00,0x10,0x00,
0x06,0x53,0x55,0x49,0x53,
0x53,0x45这组数的校验和 怎么是 0xB0 C# 的算法是什么在线等…………
0x05,0x00,0x07,0x45,0x4D,
0x42,0x41,0x4C,0x4C,0x45,
0x00,0x00,0x2B,0x00,0x01,
0x33,0x01,0x00,0x10,0x00,
0x06,0x53,0x55,0x49,0x53,
0x53,0x45这组数的校验和 怎么是 0xB0 C# 的算法是什么在线等…………
根据你用的CRC的不同标准(CRC_CCITT, CRC16, CRC32)计算出的结果也是不一样的。你可以试一下看是那个标准。
可以参看下面的C#代码
http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=5597
Checksum
This represents an "OR exclusive" of all preceding bytes (identification, lenght and data bytes). 题目 的数据 是他们提供的 示例
0xE5, //标志符
0x00,0x1E, //数据的长度 40
0x03,0x00,0x00,0x05,0x00,
0x07,0x45,0x4D,0x42,0x41,
0x4C,0x4C,0x45,0x00,0x00,
0x2B,0x00,0x01,0x33,0x01,
0x00,0x10,0x00,0x06,0x53,
0x55,0x49,0x53,0x53,0x45, //数据 (是40个长)
0xb0 //检验和0xb0是他给的示例的检验和。 这个 0xb0是怎么计算出来的啊。是超过0xFF后 取补码?
foreach (byte b in bytes)
{
checksum ^= b;
}
给你参看的 //累加和校验【每字节相加(16进)取后末两位】
public byte GetVerifyCodeByte(byte[] bytes)
{ int result = 0;
foreach (byte b in bytes)
{
result += b;
}
return (byte)(result % 256); }