var i: integer;
s1, s2: string;
begin
s1 := label1.Caption;
for I:= 1 to Length(s1) div 2 do
begin
s2 := s2 + Chr(StrToInt('$' + s1[i*2-1]+s1[i*2]));
end;
label2.Caption := s2;
end;
当汉字中有单字节字符时会出错
procedure TForm1.Button1Click(Sender: TObject);
var
s,s2,s3 : string;
i : Integer;
p : PChar;
begin
s:= Edit1.Text;
s2:= '';
for i:=0 to Length(s)-1 do
begin
s2:= s2+IntToHex(Ord(s[i+1]),2);
end;
edit2.Text:= s2;
setlength(s3,Length(s2) div 2);
p:= @s3[1];
//s3:= '';
for i:=0 to Length(s3)-1 do
//s3 := s3 + Chr(StrToInt('$' + s2[i*2-1]+s2[i*2]));
pbyte(integer(p)+i)^:=strtoint('$'+s2[i*2+1]+s2[i*2+2]);
edit3.Text:= s3;
end;
以上函数使用指针操作,避开了判断单/双字节