function HexToDec(Hex:string):integer;
var i,len,rs1,rs,j:integer;
begin
  rs:=0;  
  len:=length(Hex);
  for i:=1 to len do//每重循环计算一位,从高位到低位
  begin
    rs1:=1;
    for j:=1 to len-i do
      rs1:= rs1*16;//计算其次方
    case Hex[i] of
      '0'..'9':rs:=rs+strtoint(Hex[i])*rs1;
      'a'..'f':rs:=rs+(ord(Hex[i])-ord('a')+10)*rs1;
    else
      result:=-1;
      exit;
    end;
  end;
  result:=rs;
end;

解决方案 »

  1.   

    16=>10
    i:integer;
    i:=strtoint('$aa');    如果原先有一个16进制,那里面可以写('$'+值),记得要字符型
    或i:=$aa;10=>16
    inttohex(整型值,显示的位数)
    例inttohex(100,2)
      

  2.   

    function HexToDec(Hex:string):integer;
    var i,len,rs1,rs,j:integer;
    begin
      rs:=0;  
      len:=length(Hex);
      for i:=1 to len do//每重循环计算一位,从高位到低位
      begin
        case Hex[i] of
          '0'..'9':rs:=rs*16+ord(hex[i]);
          'a'..'f':rs:=rs*16+ord(hex[i])-ord('a')+10;
          'A'..'F':rs:=rs*16+ord(hex[i])-ord('A')+10;
        else
          result:=-1;
          exit;
        end;
      end;
      result:=rs;
    end;注意INTEGER是否会溢出? 可以试试HEXTOBIN函数
      

  3.   

    谢谢!回复人: windy2000() ( ) 信誉:100 
    溢出我知道注意的了~