有个字符串str='31323334',要把它转换为结果1234,即16进制转换ASCII,请高手解答!谢谢

解决方案 »

  1.   


    var
    str,str1,str2:string;
    i:integer;
    begin
    str:='31323334';
    str2:='';
    i:=0;
    while i<length(str) do
    begin
    str1:=copy(str,i+1,2);
    str2:=str2+chr(strtoint('$'+str1)) ;
    i:=i+2;
    end;
    showmessage(str2);
    end;
      

  2.   

    function HexToStr(AStr: string): string;
    var
       I : Integer;
       CharValue: Word;
       function TransChar(AChar: Char): Integer;
       begin
         if AChar in ['0'..'9'] then
            Result := Ord(AChar) - Ord('0')
         else
            Result := 10 + Ord(AChar) - Ord('A');
       end;
    begin
       Result := '';
       for I := 1 to Trunc(Length(Astr)/2) do
       begin
          Result := Result + ' ';
          CharValue := TransChar(AStr[2*I-1])*16 + TransChar(AStr[2*I]);
          Result[I] := Char(CharValue);
       end;
    end;
      

  3.   

    function HexToStr(AStr: string): string;
    var
    I,len : Integer;
    CharValue: Word;
    Tmp:string;
    s:char;
    begin
      Tmp:='';
      len:=length(Astr);
      for i:=1 to len  do
      begin
        s:=Astr[i];
        if s <> ' ' then Tmp:=Tmp+ string(s);
      end;
      Result := '';
      For I := 1 to Trunc(Length(Tmp)/2) do
      begin
        Result := Result + ' ';
        CharValue := TransChar(Tmp[2*I-1])*16 + TransChar(Tmp[2*I]);
        if (charvalue < 32) or (charvalue > 126)  then Result[I] := '.'   //非可见字符填充
        else Result[I] := Char(CharValue);
      end;
    之后调用该函数:
    var
    ss:string;ss:=HexToStr('31323334');
    showmessage(ss);
      

  4.   

    function DealStr(Str: string): string;
    var
      i: integer;
      S2: string;
    begin
      Str := Trim(Str);
      for i := 0 to (Length(Str) div 2) - 1 do
      begin
        try
          S2 := S2 + Chr(StrToInt('$' + Str[2 * i + 1] + Str[2 * i + 2]) );
        except
        end;
      end;
      Result := S2;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
       edit1.Text:=DealStr('31323334');
    end;
      

  5.   

    先把这个string转化为31 32 33 34 这样的数组
    然后将数组转化成 16 进制  string