解决方案 »
- C# 双击DataGridView选中行,弹出窗体form,并将该行的数据绑定到了form的TextBox等上面,form中有前一记录,后一记录按钮,如何改变值
- C#窗体应用程序如何播放声音文件?
- 想学习.NET C#方面的内容,不知道有没有好的电子书推荐啊
- C#去除字符串第一个字符
- 关于运行网页中的JavaScript时提交参数的问题
- XDE画出一个图出来打印的时候本来一张纸可以打完的,它硬是分两张纸来打,怎么调上边距和左边距?
- 大神能否解答下面的代码是什么意思 就这么一段 剩下的猜吧
- 高分求教组合控件的示例或编写思路!
- 窗体之间成员调用的问题?
- c#中有没有二维数组?
- deV的gridcontrol控件问题
- 这种excel怎么填充比较快
///CRC16校验算法,(低字节在前,高字节在后)
/// </summary>
/// <param name="data">要校验的数组</param>
/// <returns>返回校验结果,低字节在前,高字节在后</returns>
public static byte[] crc16(byte[] data)
{
if (data.Length == 0)
throw new Exception("调用CRC16校验算法,(低字节在前,高字节在后)时发生异常,异常信息:被校验的数组长度为0。");
byte[] temdata = new byte[data.Length + 2];
int xda, xdapoly;
byte i, j, xdabit;
xda = 0xFFFF;
xdapoly = 0xA001;
for (i = 0; i < data.Length; i++)
{
xda ^= data[i];
for (j = 0; j < 8; j++)
{
xdabit = (byte)(xda & 0x01);
xda >>= 1;
if (xdabit == 1)
xda ^= xdapoly;
}
}
temdata = new byte[2] { (byte)(xda & 0xFF), (byte)(xda >> 8) };
return temdata;
}
#endregion
}
用这个试试。
在网上找到了这篇文章
http://www.cnblogs.com/armyfai/p/3566144.html
crc:= (crc shr 8) xor CRCtbl[(crc xor dzp1^) and $ff];C#
crc =(crc >> 8) ^ CRCtbl[(crc ^ data[i]) & 0xff];这两句执行后,得到的CRC不一样,郁闷死了。 感觉这样写没有问题啊
a := crc shr 8;
a = 30667;C#:
ushort a = (ushort)(crc >> 8);
a = 255;这是为什么呢??????