一串字符串:
eg:string="你啊和的方式设法说服放十分6666666666666adadadadad设法说服设法说
    怎么把这串字符分成16个字节一段,(汉字两个字节,数字和字母一个字节,最后一段可以小于16个字节)??
我现在摇实现的是:对这一长串字符每16个字节调用函数SendPacket(string str);

解决方案 »

  1.   

    bytes=System.Text.Encoding.Unicode.GetBytes(str)
    作用:把str的载体作Unicode->Unicode的编码转换--也就是没有对载体作任何的转换。因些使用此函数可以得代表该String载体的字节数组。
    str=System.Text.Encoding.Unicode.GetString(bytes)
    作用:对字节数组作Unicode->Unicode的编码转换--即没有转换,把经过转换后的字节数组作为str的载体。bytes=System.Text.Encoding.Utf8.GetBytes(str)
    作用:把str的载体作Utf8->Unicode的编码转换。返回的是经过转换后的字符数组
    str=System.Text.Encoding.Utf8.GetString(bytes)
    作用:对字节数组作Gb2312->Unicode的编码转换,把经过转换后的字节数组作为str的载体。bytes=System.Text.Encoding.GetEncoding("GB2312").GetBytes(str)
    作用:把str的载体作Gb2312->Unicode的编码转换。返回的是经过转换后的字符数组
    str=System.Text.Encoding.GetEncoding("GB2312").GetString(bytes)
    作用:对字节数组作Gb2312->Unicode的编码转换,把经过转换后的字节数组作为str的载体。如此类推
    bytes=System.Text.Encoding.GetEncoding("XXX").GetBytes(str)
    作用:把str的载体作XXX->Unicode的编码转换。返回的是经过转换后的字符数组
    str=System.Text.Encoding.GetEncoding("XXX").GetString(bytes)
    作用:对字节数组作XXX->Unicode的编码转换,把经过转换后的字节数组作为str的载体。
    详细看这里:http://hi.baidu.com/aslovegod/blog/item/68faa9a4c9db0ff29152eeca.html
      

  2.   

    using System.Text;
    //……string str = "你啊和的方式设法说服放十分6666666666666adadadadad设法说服设法说";
    char[] chars = str.ToCharArray();
    for(int i=0; i<chars.Length; i+=16)
    {
        byte[] buffer = Encoding.Default.GetBytes(chars,i,16);
        SendPacket(Encoding.Default.GetString(buffer)); 
    }
      

  3.   

    string str = "你啊和的方式设法说服放十分6666666666666adadadadad设法说服设法说";
    char[] chars = str.ToCharArray();
    for(int i=0; i<chars.Length; i+=16)
    {
        byte[] buffer = Encoding.Default.GetBytes(chars,i,16);
        SendPacket(Encoding.Default.GetString(buffer)); 
    }
      

  4.   


     string str = "你啊和的方式设法说服放十分6666666666666adadadadad设法说服设法说";
            byte[] bt = System.Text.Encoding.Default.GetBytes(str);
            for (int i = 0; i < bt.Length ; i+=16)
            {
                int len = 16;
                if (i+16>bt.Length)
                {
                    len = bt.Length - i;
                }
                string s = System.Text.Encoding.Default.GetString(bt,i,len);
               SendPacket(s);
            }
      

  5.   

      建议用发送字节 string str = "你啊和的方式设法说服放十分6666666666666adadadadad设法说服设法说";              byte[] bc = new byte[1000];
    int blength=0;
    char[] chars = str.ToCharArray();
    for (int i=0;i<chars.Length;i++)
    {
        
                                byte[] bt=System.Text.Encoding.GetEncoding("gb2312").GetBytes(chars,i,1);
                             
     if (bt.Length==2)
    {
                                          blength=2*i;
           bc[blength+0]=bt[0];
           bc[blength+1]=bt[1]; }
    else

                                           blength=i;
                                           bc[blength+0]=bt[0];                              }                             }
                }
    .....
      

  6.   

    string str = "你啊和的方式设法说服放十分6666666666666adadadadad设法说服设法说";
            byte[] bt = System.Text.Encoding.Default.GetBytes(str);
            for (int i = 0; i < bt.Length ; i+=16)
            {
                int len = 16;
                if (i+16>bt.Length)
                {
                    len = bt.Length - i;
                }
                string s = System.Text.Encoding.Default.GetString(bt,i,len);
               SendPacket(s);
            }
    这样是可以实现d