做了个测试,发现从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;
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;
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;