如何进行字符串和十六进制的转换?
在delphi中,如何将字符串相互转换?
例如a:string;
b:longword;a:="0XABCD";
如何让b的值为a?b:longword;
c:string;b:=0XABCD;
然后又让c如何得到b?

解决方案 »

  1.   

    function Hex2Char(HexStr:String):Char;
    begin
      Result:=Char(StrToInt('$'+HexStr));
    end;eg:  Hex2Char('5A'); -> 'Z' 
    IntToHex是以十六进制的格式显示
      

  2.   

    你可以先将字符串转换为数字型之后再转为十六进制:
    IntToHex(StrToInt('123'));
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      tmp1:char;
      c:string;
      okstr:string;
      getstr:string;
      i:Integer;
    begin
      c:='我们都是程序员,总共23个,do you?';
      for i:=1 to length(c) do
      begin
        okstr:=okstr+inttohex(ord(c[i]),2);
      end;
      showmessage(okstr);
      //上面转换成字符串了,16进制的,下面解出来;
     for i:=1 to (length(okstr) div 2) do
     begin
       getstr:=getstr+char(strtoint('$'+copy(okstr,(i-1)*2+1,2)));
     end;
     showmessage(getstr);
     //转换完毕,请我吃饭啊,呵呵
    end;
      

  4.   

    function StrToHex(AStr: string): string;   var 
       I : Integer; 
       Tmp: string;   begin 
       Result := ""; 
       For I := 1 to Length(AStr) do   begin 
       Result := Result + Format("%2x", [Byte(AStr[I])]);   end;    I := Pos(" ", Result); 
       While I <> 0 do   begin 
       Result[I] := "0"; 
       I := Pos(" ", Result);   end;  end; function HexToStr(AStr: string): string;   var    I : Integer; 
       Charvalue: Word;   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; 
      

  5.   

    首先我认为longword是个最大范围的integer类型,既然是integer就不能表示出'a,b,c,d...'
    只能以10进制表示16进制   以bcd码为转换中间(bcd是10进制的转换吗,当然也有8431码,这里不是)让b的值为a  b:=inttohex(bcdtoint(strtobcd(a)));   //inttohex是否需要你自己试一下
    真正的hex只能转换成二进制bin   我认为 b:= bcdtoint(strtobcd(a));足够了 
    这是b的longword内保存的是int行变量  于是有
    c如何得到b  c:=format('%h',inttohex(b));
      

  6.   

    Function MyTenToHex(SStr:String):String;
    var
        i:Integer;
        TStr:String;
    begin
        for i:=1 to Length(SStr) do
            TStr:=TStr+IntToHex(Ord(Sstr[i]),2);
        Result:=TStr;
    end;Function MyHexToTen(SStr:String):String;
    var
        i:Integer;
        TStr:String;
    begin
        for i:=1 to Length(SStr) div 2 do
            TStr:=TStr+Chr(Strtoint('$'+Sstr[2*i-1]+Sstr[2*i]));    Result:=TStr;
    end;
    这是我用的两个函数,看看对你不否帮助 ,
      

  7.   

    谁能解答 ihihonline(小小-&gt;沉论中......)  的代码中
    function StrToHex(AStr: string): string; 函数的
     I := Pos(" ", Result); 
       While I <> 0 do   begin 
       Result[I] := "0"; 
       I := Pos(" ", Result);   end; 
    的作用?
      

  8.   

    好像大家搞错了,或者我没有说清楚。
    var
    a:string;
    b:longword;
    begina:="1abcd"; 
    如何让
    b:=1abcd还有反过来,b=1abcd;
    如何让a='1abcd'
      

  9.   

    http://www.kaer.com.cn/default.aspx上有个串口通讯的例子,里头有这方面的技巧,