日期:2014-05-18  浏览次数:20925 次

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

对这一长串字符每16个字节调用函数SendPacket(string str);



------解决方案--------------------
楼主,按你的说法,就算实现了也会有问题的,假如一个汉字刚好被分割到两部分里面你怎么取这个汉字,取不到,或者取到乱码。你可以把你真正要实现什么东西提一下。


假如仅仅是进行分割的话可以用1楼的方法。
------解决方案--------------------
C# code

 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);
        }

------解决方案--------------------
建议用发送字节 

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];

}

}




}
.....
------解决方案--------------------
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