有1字符串,T0E20061212101111,其中0E为16进制,换算为整数就是14,就是代表后面日期的长度,但我在delphi中怎样把整数14转换为0x0E(1位的字符,不是“0E”2位字符串),即0E算1个长度,T0E20061212101111的全部长度为14+1+1=16长。

解决方案 »

  1.   

    例如
    Tx2030,其中x应该为16进制的0x04,就是把4转换为16进制
      

  2.   

    sendbuf:pchar;sendbuf:=pchar('T'+'X'+formatdatetime('yyyymmddhhmmss', now));
    sendbuf[1]:= ???
     我怎么把X处变成16进制0x0E呢
      

  3.   

    var
      s:string;
    begin
      s:='T'+inttohex(14,2)+'20061212101111';
      showmessage( s );
      

  4.   

    inttohex(14,2)是转换成了实际的0E  2位的字符串了,我想要的就是16进制的0x0E,showmessage( s ); 中0E应该是显示不出来的
      

  5.   

    搞出来了
        sendbuf := pchar('T' + '0' + formatdatetime('yyyymmddhhmmss', now));
        sendbuf[2] := chr(Byte(length(formatdatetime('yyyymmddhhmmss', now))));
      

  6.   

    看来楼主欲得到这样的字串,是基于一种我们所不知道的特殊的需求....楼主给我发的站内消息,二十分钟前刚刚看到.....为了不辜负楼主的期望,就给楼主一种另类的实现方式吧:var
      S : string[255];
      L : Char absolute S;
      SendBuf : string;
    begin
      S := FormatDateTime('yyyymmddhhmmss', now);
      SendBuf := 'T' + L + S;
    end;
      

  7.   

    -_-....format('T%.2x%s',[length(formatdatetime('yyyymmddhhnnss',now)),formatdatetime('yyyymmddhhnnss',now)]);
      

  8.   

    辣椒你没看明白楼主的真正需求.....楼主要的,不是 T + 原字串S长度的十六进字串形式 + S  ,而是:把原字串S从S[0]开始放到新字串的'T'后面.......