做了个测试,发现从bin转hex是正常的,但是从hexTobin有问题,有时候是正常的,有时候后面会多一些空格和一些乱七八糟的字符。请指教!下面是代码:-------------------------------------//HexToBin
procedure TForm1.Button1Click(Sender: TObject);
var
  Text, Buffer: PChar;
  Bufsize : Integer;
begin
  if(Edit1.Text<>'') then
  begin
    Text := pchar(Edit1.Text);
    BufSize := Length(Text) DIV 2;
    HexToBin(Text, Buffer, BufSize);
    ShowMessage(inttostr(length(Buffer))); //这里出来的长度有时候有问题
    Edit2.Text := Buffer;
  end;
end;//BinToHex
procedure TForm1.Button2Click(Sender: TObject);
var
  Buffer,Text: PChar;
  BufSize,i : Integer;
  ostr : string;
begin
  if(Edit2.Text<>'') then
  begin
    ostr := '';
    Buffer := Pchar(Trim(Edit2.Text));
    BufSize := Length(Buffer);
    GetMem(Text, 2*BufSize);
    BinToHex(Buffer, Text, BufSize);
    for i := 0 to (2*BufSize-1) do
      ostr := ostr + Text[i];
    Edit1.Text := ostr;
    FreeMem(Text);
  end;
end;

解决方案 »

  1.   

    十六进制转换二进制function HexToBin(Hexadecimal: string): string;
    const
      BCD: array [0..15] of string =
    ('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111','1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111');
    var
      i: integer;
    begin
      for i := Length(Hexadecimal) downto 1 do
        Result := BCD[StrToInt('$' + Hexadecimal[i])] + Result;
    end;
      

  2.   

    补充:我想实现的功能是: 从A输入框输入任何字符,包括汉字,//BinToHex之后都可以变成16进制显示在B输入框内然后再//HexToBin时候能够把B输入框内的16进制还原到A输入框内。