public static string GetHexFromChs(string s)  //'汉字转16进制,s为传过来的汉字字符串
        {
            //if ((s.Length % 2) != 0)
            //    throw new ArgumentException("s   is   not   valid   chinese   string!");            System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");
            //int m = s.Length;
            // string str1 = "";
            //Encoding.ASCII.GetString(
            byte[] bytes = chs.GetBytes(s); 
            string str = ""; 
            for (int i = 0; i < bytes.Length; i++)
            { 
                str += string.Format("{0:X}", bytes[i]);
            } 
            return str;
        }Function GBToHex(sGB As String) As String  'sGB为传来的汉字字符串
    '汉字转16进制
    Dim sResult  As String
    Dim iLoop As Integer
    sResult = ""
    For iLoop = 1 To Len(sGB)
            sResult = sResult + Right("0000" + Hex(Asc(Mid(sGB, iLoop, 1))), 4)
    Next iLoop
    GBToHex = sResult
End Function

解决方案 »

  1.   

    我的C#的转完后加入是  CDF6D3。
        VB的转后          CDF6D003很多地方都是多了两三个零,其他的字符是一样的,这怎么让他们一样啊,我是用来软件注册的,VB的软件和C#的软件都判断这个注册号,VB的转的对,我用C#开发了一个新软件也判断这个号,现在不同C#的软件不能用,???
      

  2.   

    c#代码中str += string.Format("{0:X}", bytes[i]);改为str += string.Format("{0:X2}", bytes[i]);
      

  3.   

    晕,你的代码有问题,这与C#还是VB有啥关系
      

  4.   

    str += string.Format("{0:X2}", bytes[i]);
    ("{0:X2}", 这里的X2什么意思啊,就是补充的零的个数吗
      

  5.   

    我的VB的是那样转的,因为开始注册的时候是用VB的软件注册的,所以VB的转16进制判断注册号对,但是C#的那样转出来的不一样,所以问问大家是不是我VB的C#那个地方写的不对
      

  6.   

      string str = "";  
      for (int i = 0; i < bytes.Length; i++)
      {  
      str += string.Format("{0:X}", bytes[i]);
      }  可以改为:str = BitConverter.ToString(bytes).Replace("-","");
      

  7.   

    我试了,不对,C#中还是CDF3。应该是CDF003。我发现VB中很多多零的地方时3前面,都是003然后字符,C#中都没有00只是字符 直接加3 CDF3
      

  8.   

    ).Replace("-……
    这是什么?我的C#生成的字符中没有“-”这个符号啊,
      

  9.   

    BitConverter.ToString直接把byte数组转为16进制字符串,结果字符串是逐字节以'-'隔开的v叔就是我,没看我的viena是v开头的吗
    V5就是威武,最近流行的网络缩略语
      

  10.   

    哦,呵呵,还以为是什么那,OUT了我,我的用“-”这个隔开就会出现003了吗,然后我把“-”这个符号去掉是把,17楼的,我的是一个酒店地址,启德大酒店
      

  11.   

    看VB代码,好像是每个字符ASCII转16进制,然后前面以0补足4位,不知道对不对?
      

  12.   

    Uniode一个字符是两个字节的,
    C#代码完全不对了
      

  13.   

    public static string GetHexFromChs3(string s)
    {
        Encoding encoding = Encoding.GetEncoding("GB2312");
        StringBuilder builder = new StringBuilder();
        foreach (char c in s)
        {
            builder.Append(BitConverter.ToString(encoding.GetBytes(c.ToString())).Replace("-","").PadLeft(4,'0'));
        }
        return builder.ToString();
    }
      

  14.   

    好像是,但是都是在一个字符上转出来的不一样,都是有003的地方,其他的地方C#的和VB的都一样,只有这个003不一样,改怎么办,难道要找出是哪个汉字转成了转的一个是3一个是003,然后我把这个汉字单独手动加进去00,但是该怎么加啊