下面的代码是从其他语言翻译过来的,调试不报错,但是一传值进去,进程就死了.各位大侠帮我看看拉
private string crc(string Buf)
{
ushort r,c,Last;
int i,j,mMod,Len;
char[] XyHex=new char[4];
const string HexNm="0123456789ABCDEF";
Len=Buf.Length;
r = 0x0000;
for(i=0;i<=Len-1;i++)
{
r =Convert.ToUInt16(r ^ Convert.ToUInt16((int)Buf[i]));
for(j=0;i<=7;j++)
{
c=Convert.ToUInt16(r & 0x0001);
r=Convert.ToUInt16(r >> 1);
if(c>0)
r=Convert.ToUInt16(r ^ 0xa001);
}
}
for(i=0;i<=3;i++)
{
XyHex[i] ='0';
}
Last =r;
j=3;
while(Last!=0)
{
mMod =(int)Last % 16;
XyHex[j]=HexNm[mMod];
Last=Convert.ToUInt16(Last / 16);
j--;
}
return XyHex.ToString();
}
private string crc(string Buf)
{
ushort r,c,Last;
int i,j,mMod,Len;
char[] XyHex=new char[4];
const string HexNm="0123456789ABCDEF";
Len=Buf.Length;
r = 0x0000;
for(i=0;i<=Len-1;i++)
{
r =Convert.ToUInt16(r ^ Convert.ToUInt16((int)Buf[i]));
for(j=0;i<=7;j++)
{
c=Convert.ToUInt16(r & 0x0001);
r=Convert.ToUInt16(r >> 1);
if(c>0)
r=Convert.ToUInt16(r ^ 0xa001);
}
}
for(i=0;i<=3;i++)
{
XyHex[i] ='0';
}
Last =r;
j=3;
while(Last!=0)
{
mMod =(int)Last % 16;
XyHex[j]=HexNm[mMod];
Last=Convert.ToUInt16(Last / 16);
j--;
}
return XyHex.ToString();
}
解决方案 »
- 来接分,顺便留下你的算法【求任意长度的两个正整数数组中 重复数字的个数】
- 那位高手帮我看看怎么实现
- 泛型绑定GridView
- winform动态加入按钮问题?
- 将网页保存在SqlServer中后提取出来将其赋值于Label,为何没有网页的原有格式?请问:如何将其从数据库提取后保持原有格式?
- 这几天弄 TaskVision 遇到个郁闷的问题,请大家帮帮忙!
- 如何实现上传图片?
- 关于textbox数据绑定的问题
- showModalDialog 弹出的窗口 如何修改IE的标题?
- 时间分秒毫秒化成2个字节正确的写法是怎样的?
- 如何利用AJAX.NET把一个数组赋值给JS啊
- 比较急啊,如何把一个子目录及其下属目录的所有文件移动到子目录的父目录中?
public string CRC(byte [] bs)
{
ushort checksum = 0;
for (int i = 0; i < bs.Length; i++)
{
checksum ^= bs[i];
for (int j = 0; j < 8; j++)
{
bool b = ((checksum & (ushort)1) == 1);
checksum >>= 1;
if(b) checksum ^= 0xA001; //1010 0000 0000 0001
}
}
return checksum.ToString("X4");
}