i:=format('%x',intvalue);
10->16用IntToHex()
16->10用StrToInt(),不过要在str前加上$,如StrToInt('$FF');

解决方案 »

  1.   

    To lizhenjia(暴雪) 
    变量前面也可以吗?但我要把这个数组转换成一个十进制数啊!
      

  2.   

    当然可以,参照我的例子:
    procedure TForm1.Button1Click(Sender: TObject);
     var
       sHex :string;
       i:longint;
     begin
       sHex:='FF';
       i:=StrToInt('$'+sHex);
       showmessage(sHex+'对应的10进制数是:'+inttostr(i));
     end;
      

  3.   

    var
     s:string;
     I:integer;for i:=0 to 3 do
     s:=s+inttostr(ord(sChar[I]));
    s:='$'+s;
     I:=strtoint(s);
      

  4.   

    To eulb(执子之手,与子偕老) 
    你 的s最后是0135117,而我要求最后S是012375啊,求求你再想想办法吧!
      

  5.   

    楼上说得对,只要在合法的数字前加一个$(形成一个字符串),用strtoint转换就自动按16进制转换。
      

  6.   

    同意
    我在前面的文章里面也说过了
    另外你可以去www.swissdelphicenter.ch去看看
      

  7.   

    用ORD(SCHAR[I])得到的只是十六进制的十进制表示方法,也就是说最后用STRTOINT转换的数是十进制的,就象上面本来需要转换的是
    STRTOINT($12375),但是如果用ORD(SCHAR[I])之后,就变成转换
    STRTOINT($135117)了,这个问题怎么解决呢?
      

  8.   

    To ahuige(灰不遛秋)
    你说的非常正确,数组里的确存的是字符,但我必须将这一串字符的ASCII码当成一个十六进制的数,并将它转换成十进制的数!
    请问能有办法吗?
      

  9.   

    问题解决了,
    用inttohex(schar[i],2);就可以了。
    for I:=0 to 3 do
     s:=s+string(inttohex(ord(sChar[I]),2));
     s:='$'+s;
     I:=strtoint(s);
     showmessage(s);
     showmessage(inttostr(i));
    调试通过
      

  10.   

    其实那个string()都可以不用,inttohex函数的返回值本来就是字符;