谁给我解释一下以下代码 是做的什么转换吗?var
c:string;
str:string;
i:integer;
begin
 c:=edit1.Text;
 for i:=1 to length(c) do
  begin
   str:=str+inttohex(ord(c[i]),2);
   end;
  memo1.Clear;
  memo1.Lines.Add(str);
end;
==================================
var
c:string;
str:string;
i:integer;
begin
   c:=edit2.Text;
   for i:=1 to (length(c) div 2) do
    begin
     str:=str+chr(strtoint('$'+C[2*i-1]+c[2*i]));
    end;
   memo1.Lines.Add(str);
end;
=============================
var
s,c:string;
STR:integer;
begin
s:=edit3.Text;
STR:=strtoint('$'+s);
 c:=inttostr(str);
memo1.Lines.Add(c);
end;
=========================
谢谢大家!!!!!!

解决方案 »

  1.   

    PTW:首先建议楼主自己做三个函数自己测试!var
    c:string;
    str:string;
    i:integer;
    begin
     c:=edit1.Text;
     for i:=1 to length(c) do
      begin
       str:=str+inttohex(ord(c[i]),2);
       end;
      memo1.Clear;
      memo1.Lines.Add(str);
    end;
    上面的函数是把输入的字符串按字节显示每个字节的十六进制码值。
    其实就是每个字符的ASCII码值显示成HEX码。
    如:输入:‘12345’;
    显示为:31 32 33 34 35(原函数中无空格,这是我加的,看起来方便些。[:-)])
    ==================================
    var
    c:string;
    str:string;
    i:integer;
    begin
       c:=edit2.Text;
       for i:=1 to (length(c) div 2) do
        begin
         str:=str+chr(strtoint('$'+C[2*i-1]+c[2*i]));
        end;
       memo1.Lines.Add(str);
    end;
    这个函数的功能与上面的函数功能是相反的。也就是把输入的字符串每两位取出来后,转换成ASCCI码后,显示这个ASCII码对应的字符。
    如输入为:'303234363839';
    输入显示:'024689';=============================
    var
    s,c:string;
    STR:integer;
    begin
    s:=edit3.Text;
    STR:=strtoint('$'+s);
     c:=inttostr(str);
    memo1.Lines.Add(c);
    end;
    这个函数的功能是把输入的字符串当成十六进制码,然后转换成整数显示。
    如输入:‘EF’;转换后会显示成:239
    =========================
    谢谢大家!!!!!!
    注意:输入第二个与第三个函数的输入内容只能为:‘0’..'9','a'..'f','A'..'F'