求5566的CRC校验码时多出一个问号BECA?代码如下:
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;procedure TForm1.Button1Click(Sender: TObject);
var
  str,Str1: String;
  Ret: Word;
  mybyte:pchar;
  i: Integer;
begin
  Str1 := Edit1.Text; //假定你用Edit1输入
  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);
  label1.Caption:=edit1.Text+' '+mybyte;
  edit2.Text:=edit1.Text+' '+mybyte;
end;end.