会delpli的高手帮我翻译下,翻译成C#.(急在线等)
Function crc(buf:string):String;
Var
r,c,Last:word;
i,j,mMod,len:integer;
XyHex:Array[0..3] of Char;
const HexNm='0123456789ABCDEF';
Begin
Len:=length(Buf);
r:=$0000;
For i:=0 to len-1 do
Begin
r:=r xor ord(buf[i+1]);
For j:=0 to 7 do
Begin
c:=r and $0001;
r:=r shr 1;
if c>0 then r:=r xor $a001;
End;
End;
for I:=0 to 3 do
XyHex[I]:='0';
Last:=r;
J:=3;
while Last<>0 do
Begin
mMod:=Last Mod 16;
XyHex[J]:=HexNm[mMod+1];
Last:=Last Div 16;
J:=J-1;
end;
Result:=XyHex;
end;
问题点数:100、回复次数:7Top
1 楼okyzx(Jason)回复于 2005-08-01 16:06:25 得分 100
private string crc(string Buf)
{
uint r,c,Last;
int i,j,mMod,Len;
char[] XyHex=new char[3];
string HexNm="0123456789ABCDEF";
Len=Buf.Length;
for(i=0;i<Len;i++)
{
r =r ^ Buf[i +1];
for(j=0;i<7;j++)
{
c=r & 0x0001;
r=r >> 1;
if(c>0)
r=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+1];
Last=(uint)Last / 16;
j--;
}
return XyHex.ToString();
}
Top
2 楼okyzx(Jason)回复于 2005-08-01 16:07:06 得分 0
先试试,有什么问题再调试Top
3 楼crossrowman(godi)回复于 2005-08-01 16:13:01 得分 0
这句改下 char[] XyHex=new char[3];
char[] XyHex=new char[4];//是4 而不是 3Top
4 楼fxhslk(低语之森)回复于 2005-08-01 17:31:41 得分 0
运行后,一传值进去,进程就死了555555555Top
5 楼NewBo(^_^)回复于 2005-08-01 17:50:52 得分 0
同意: crossrowman(godi)Top
6 楼fxhslk(低语之森)回复于 2005-08-02 10:09:31 得分 0
我把小鱼前辈的代码改了改,但是还是有问题.大家再帮我看看吧.一调试成功就结帖
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();
}Top
7 楼fxhslk(低语之森)回复于 2005-08-02 10:24:14 得分 0
各位救命啊........Top




