'97 7A'是字符形式的,我想把这个字符形式的转换成真正的十六进制的数据,即,在内存中显示成97 7A,可以达到吗?

解决方案 »

  1.   

    function   StrToHex(mStr:   string):   string;    
      var    
          I:   Integer;    
      begin    
          Result   :=   ’’;    
          for   I   :=   1   to   Length(mStr)   do    
              Result   :=   Format(’%s%.2x’,   [Result,   Ord(mStr[I])]);    
      end;
      

  2.   

    谢谢楼上的答复,不过你可能误解了我的意思,你这个函数的作用是把字符串转化成了字符串的十六进制,比如你这段函数把字符串'97 7A'变成了'3937203741', 但是在内存中显示的并不是97 7A,我要的是把字符串比如'97 7A'转化成在内存中也是显示成97 7A
      

  3.   

    这个我有点不清楚,你的97 7A究竟是什么?ASCII码还是就是那个数据?
    如果你要内存中写入的话,估计得WriteProcessMemory了
      

  4.   

      回楼上: 现在的'97 7A'就是个字符串, 我想要把这个字符串转换成内存中的两个字节(内存中显示的7A等就是一个字节嘛,97 7A就是两个字节了)。其实我的最终目的是想用汉字的Unicode码替换内存中的汉字的Unicode码,因为想自定义汉字,所以需要先把汉字转换成Unicode码,然后动态的写入内存,现在的问题是汉字的Unicode码转换出来了,但是不知如何将这些码转换成真正的十六进制的数据,然后写入内存。
      WriteProcessMemory我倒是会用,关键是不知道如何转换数据。
      

  5.   

    var
      s:string;
      c:char;s:='7a';
    c:=chr(inttostr('$'+s));
      

  6.   

    http://download.csdn.net/source/1126508
    也许这个有点用?
    下午考六级,要闪人了……
      

  7.   

    Chinese=array[0..1]   of   char;   
        
      function   TForm1.ChineseToHex(const   Value:   chinese):   string;   
      begin   
          Result:=inttohex(ord(Value[0]),2)+inttohex(ord(Value[1]),2);   
      end;   
        
      procedure   TForm1.Button1Click(Sender:   TObject);   
      var   
          s:Chinese;   
      begin   
          s:='你';   
          caption:=ChineseToHex(s);   
      end;
      

  8.   

    谢了, 不过应该是StrToInt, 原来直接加个'$'就行了。
    同时也谢谢gyk120的帮助