Delphi 十进制转十六进制函数怎么实现,不要IntTohex,以为IntTohex返回的是string类型!要求返回的是Byte型!

解决方案 »

  1.   

    type
      TBytes = array of Byte;function IntToBytes(value: Integer): TBytes;
    begin
      SetLength(Result, sizeof(Integer));
      Move(value, Result, sizeof(Integer));
    end;
      

  2.   

    如果是阿发伯的答案,也可以通过定义结构体来达到:  TIntegerByte = record
        case Boolean of
        True: (A: Integer);
        False: (B: Byte; C: Byte; D: Byte; E: Byte);
      end;
      

  3.   


    我要往端口发送数据,发的是ASCII码,不能发十进制的,只能发十六进制;比如‘0’就不能发十进制的48,只能发十六进制的30;而得到的数据是Integer型的48,必须得转换成$30.
      

  4.   

    你的这个是要把字符专程十六进制的字符发送,这样你要把每一个Byte转成Hex,给你一个函数参考,这个是把内存块直接转成16进制的文本串,你参考一下:function DataToHex(Data: PChar; Len: integer): string;
    {
      把指定的二进制数据转换成十六进制表示的字符串
    }
    begin
      SetLength(Result, Len shl 1);
      BinToHex(Data, PChar(Result), Len);
    end;如:要转Integer类型
    i: Integer;
    DataToHex(@i, SizeOf(Integer));
      

  5.   

    这个有点晕char('0')=$30 (也等于48)
    既然要求返回byte,那都是二进制,既可以以十六进制输出(30),也可以以10
    进制输出(48)format('十进制:%d , 十六进制:%x',[ord('0'),ord('0')])