要求将excel表或文本文件中的一列10位16进制数据转换为8位10进制数据。转换规则:把16进制数据的倒数第5位和倒数第6位转换为3位10进制数据,如1700B7DFE7  的B7转换后为183把后4位16进制转换为5位10进制数据,如1700B7DFE7的DFE7转换后为57319,转换后的两个新数据合起来为18357319当中不够位数的前面补0
如17001A10AF  1A转换后为026    10AF转换后为04271   两个数据合起来为02604271转换前数据格式
17001A10AF
1700B7DFE7
1700B7E77C
1700B853A9
1700B852E7 转换后输出格式
17001A10AF 02604271
1700B7DFE7 18357319
1700B7E77C 18359260
1700B853A9 18421417
1700B852E7 18421223

解决方案 »

  1.   


    十六进制转十进制
    Function HexToDec(const Value :string ) : string;
    var
      s : string;
    begin
      //如果Value前没有$符号,则加上#36,否则不用加
      s := #36  + Value;
      Result := IntToStr(StrToInt(s));
    end;使用
    ShowMessage(HexToDec('FF'));/255
      

  2.   

    var
      strHex: String;
      StrDest: String;
    begin
      StrHex := '17001A10AF';
      StrDest := Copy(StrHex,1,4) + Format('%0.3d',[HexToInt(Copy(StrHex, 5, 2))]) + + Format('%0.5d',[HexToInt(Copy(StrHex, 7))]);
    end;
      

  3.   


    function TForm1.ConvertNum(ANum: String): String;
    var
      s1, s2: string;
    begin
      s1 := RightStr('000' + IntToStr(StrToInt('$' + Copy(ANum, 5, 2))), 3);
      s2 := RightStr('00000' + IntToStr(StrToInt('$' + Copy(ANum, 7, 4))), 5);
      Result := s1 + s2;
    end;
      

  4.   


    function HexToInt(Value: String): Integer;
    begin
      Result := StrToInt('$'+Value);
    end;var
      strHex: String;
      StrDest: String;
    begin
      StrHex := '17001A10AF';
      StrDest := Copy(StrHex,1,4) + Format('%0.3d',[HexToInt(Copy(StrHex, 5, 2))])  + Format('%0.5d',[HexToInt(Copy(StrHex, 7, 4))]);
      ShowMessage(StrDest);
    end;
      

  5.   

    function HexToInt(Value: String): Integer;
    begin
      Result := StrToInt('$'+Value);
    end;
      

  6.   


    IniFile := IniFile.Create('D:\'+'BB.txt');
    IniFile.WtiteString('DD','CC=aaa','');
      

  7.   

    还有一种编码是10位数的,就是把后8位转换为10位10进制的数据,用StrToInt无法实现,有没有什么办法?