function TCodeConverter.GBKToUCS2(Contend:String): string; 
var 
  UniCode4String: UCS4String; 
  i: Integer; 
  Tep: Array of Byte; 
  Resutl_String: string; 
begin 
  if length(Trim(Contend))=0 then 
    Result:='' 
  else 
    begin 
    UniCode4String:=WideStringToUCS4String(trim(Contend)); 
    SetLength(Tep,(length(UniCode4String)-1)*2); 
    for i:=0 to length(UniCode4String)-2 do 
        begin 
            Tep[2*i]:=(UniCode4String[i]) div 256; 
            Tep[2*i+1]:=UniCode4String[i] mod 256; 
        end; 
      SetLength(Resutl_String,(length(UniCode4String)-1)*4); 
      BinToHex(@Tep[0],@Resutl_String[1],length(Tep)); 
      Result:=Resutl_String; 
    end; 
  
end; 
希望高手能帮帮忙啊!在线等!

解决方案 »

  1.   

    可以搜下需要实现的功能!!Delphi不能像C#与VB那样相互转化的,好多方法都是不支持的!!
      

  2.   

    http://computer.99365.net/user1/blizzard/archives/2007/9488.htmlhttp://download.csdn.net/down/232023/liugang418000
      

  3.   

    这个是关于gb 到 ucs2的
      

  4.   

    不知道UCS4String类型在C#中如何表示。
    其余的都好说
      

  5.   

    找出这个UCS4String类型在C#是匹配那个类型
    然后再找出,长字符串转到UCS4String这个类型的方法,那么这个代码就可以转过来了
    其他都是基础函数
      

  6.   

    终于解决了~~~把pdu的那个类里面的转换函数修改下,就能用了……谢谢大家啦1
      

  7.   


            private String GBKToUCS2(String str)
            {
                byte[] bt = Encoding.BigEndianUnicode.GetBytes(str);
                String rt = "";
                for (int i = 0; i < bt.Length; i++)
                {
                    rt += String.Format("{0:X}", bt[i]);
                }            return rt;
            }
      

  8.   

    private String GBKToUCS2(String str)
    {
        return BitConverter.ToString(Encoding.BigEndianUnicode.GetBytes(str)).Replace("-", "");
    }测试:Console.WriteLine(GBKToUCS2("Zswang 路过!"));
    输出:005A007300770061006E006700208DEF8FC70021和Delphi中一致。