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