如何把16进制数转换成10进制数,
比如16进制数:1E 02 00 0B 2B,
其中“00 0B”是我要的16进制数,2B是校验码,
如果把“00 0B”转换成10进制,再取出来?
着急!!!1

解决方案 »

  1.   

    StrToInt('$FFFF');
    StrToInt('0xFFFF');
    都可以
      

  2.   

    方便,快速,的代吗
    fuction DecToBase(Decimal:Longint;const Base:byte):string;
    const
      Symbols:string[16]='0123456789ABCDEF';
    var
      scratch:string;
      remainder:Byte;
    begin
      scratch:='';
      repeat
       //得到在Base进制下当前位的权值
       remainder:=Decimal mod Base;
       Scratch:=Symbols[remainder+1]+scratch;
      //调整十进制大小
       Decimal:=Decimal div Base;
      until (Decimal=0);
    Result:=scratch;
    end;
      

  3.   

    var a: array[1..5] of byte;;
    begin
      a[1] := StrToInt('$1E');
      a[2] := StrToInt('$02');
      a[3] := StrToInt('$00');
      a[4] := StrToInt('$0B');
      //你的校验码好像是累加和校验  如果是这样的话
      a[5] := a[1] + a[2] + a[3] + a[4];
    end;
      

  4.   

    strtoint 是把字符窜转化为数字,所以16进制能自动转化
      

  5.   

    function chValue(ch: char): integer; //ch的大小
    begin
      if ch in ['0'..'9'] then
        result := ord(ch) - ord('0')
      else if ch in ['A'..'Z'] then
        result := ord(ch) - ord('A') + 10
      else
        assert(false);
    end;function HexStrToInt(str: String): integer; //转换16进制字符串
    var
      i: integer;
      len: integer;
    begin
      str := upperCase(str);
      len := length(str);
      for i := len downto 1 do
        result := Trunc(power(16, len - i)) * chValue(str[i]);
    end;function StrToInt2(str: String): integer; //转换
    begin
      str := Trim(str);
      if (LastDelimiter('Hh', str) <> 0) and (LastDelimiter('Hh', str) <> Length(str)) then //非法格式
        raise EConvertError.Create('格式不对')
      else if LastDelimiter('Hh', str) = Length(str) then //Hex
        result := HexStrToInt(Copy(str, 1, Length(str) -1))
      else  //Dec
        result := StrToInt(str);
    end;