function StrToHexStr(const S: string): string;
//字符串转换成16进制字符串
var
    I: Integer;
begin
    for I := 1 to Length(S) do
    begin
        if I = 1 then
          Result := IntToHex(Ord(S[1]), 4)
        else Result := Result + IntToHex(Ord(S[I]), 4);
    end;
end;
上面的函数可以对英文和数字进行转化,但是对于中文字符,转化的就不正常,哪位修改下,给我个完整的,谢谢诶!如中文delphi 转化 4E2D658700640065006C007000680069

解决方案 »

  1.   

    delphi直接有函数的:
    procedure TForm1.Button1Click(Sender: TObject);
    const
      s:pwidechar='中文delphi';
    var
      buff:array[0..100] of char;
    begin
          fillchar(buff,100,0);
         BinToHex(pchar(s),buff,length(s)*2);  //这个可以直接转
         ShowMessage(string(buff));end;
      

  2.   


      function   strtohex(str:string):string;   
      var   i:integer;   
      begin   
          for   i:=1   to   length(str)   do   
          begin   
              result:=result+inttohex(ord(str[i]),2);   
          end;   
      end;   
        
      procedure   TForm1.Button1Click(Sender:   TObject);   
      begin   
          showmessage(strtohex('中国'));   
      end;
      

  3.   

    上面说错了把。我转和要和一个C#的程序对应 
    程序如下。
     public  string Encode(string strEncode)
        {
            string strReturn = "";// 存储转换后的编码
            foreach (short shortx in strEncode.ToCharArray())
            {
                strReturn += shortx.ToString("X4");
            }
            return strReturn;
        }
      

  4.   

    你看一下结果就知道了,我用pwidechar就是因为发现你转出来汉字的值是unicode的,也就是说调用BinToHex时第一参数你要给它WideString的值(如果你用2009以上版本,就不用转了)
    你的程序也是这个原因