16,749
社区成员
发帖
与我相关
我的任务
分享
var
str: String;
begin
str := #$2b#$00#$01#$00#$0a;
ShowMessage(IntToHex(mjComCRC(PByte(str),Length(str)),2));
end;
uses winsock;
var
str: String;
begin
str := #$2b#$00#$01#$00#$0a;
ShowMessage(IntToHex(htons(mjComCRC(PByte(str),Length(str))),2));
end;
var
str: String;
Ret: Word;
begin
str := #$2b#$00#$01#$00#$0a;
Ret := mjComCRC(PByte(str),Length(str));
SetLength(Str,sizeof(Ret) * 2);
BinToHex(PChar(@Ret),PChar(Str),sizeof(ret));
ShowMessage(str);
end;
function mjComCRC(buf: PByte;len: Integer): Word;
var
i,j: Integer;
chr: Word;
begin
Result := $ffff;
for j:=0 to len-1 do begin
chr := PByte(LongWord(buf)+j)^ and $ff;
Result := Result xor chr;
for i:=0 to 8 -1 do begin
if ((Result and 01)<>0) then
Result := (Result shr 1) xor $a001
else
Result := Result shr 1;
end;
Result := Result and $ffff;
end;
end;
var
str,Str1: String;
Ret: Word;
mybyte:pchar;
i: Integer;
begin
Str1 := Edit2.Text; //假定你用Edit2输入
SetLength(Str,Length(Str1));
i := HexToBin(PChar(str1),PChar(Str),Length(Str1));
SetLength(Str,i);
Ret := mjComCRC(pbyte(Str),i);
GetMem(mybyte,sizeof(Ret) * 2);
BinToHex(PChar(@Ret),PChar(mybyte),sizeof(ret));
ShowMessage(mybyte);
end;