一、获取字符串字节长度
private string getCountStr(string str,int count)
{
byte [] bwrite=Encoding.GetEncoding("GB2312").GetBytes(str.ToCharArray());
if(bwrite.Length>=count)
return Encoding.Default.GetString( bwrite,0,count);
else return Encoding.Default.GetString(bwrite);
}
上面的这个方法就可以获得一个字符串中相应的字节数的子串。
比如:
str1="中华人民共和国?" ;
str2="abcdefghijklmn";
分别调用上述函数,
str1=getCountStr(str1,12);
str2=getCountStr(str2,12);
就会返回
str1的值为 中华人民共和
str2的值为 abcdefghijkl
注:另有BitConverter.ToString(System.Text.Encoding.Unicode.GetBytes("abc中国")).Replace("00","").Replace("-","").Length \2
不同的编码,对ABC 编码不一样,比如 用Unicode,他编码的时候,每个字符都会翻译称两个byte数组, 对于中文是两个都大于0的字符,而英文则是asciii 一个,0 一个,所以"abc中国" 应该翻译成
97 00 98 00 99 00 xx xx xx xx, 这里xx 应该都是不为0
希望统计的就是英文字符占一位, 中文占两位. 所以我把这些byte先用string 表示,然后替换掉00
private string getCountStr(string str,int count)
{
byte [] bwrite=Encoding.GetEncoding("GB2312").GetBytes(str.ToCharArray());
if(bwrite.Length>=count)
return Encoding.Default.GetString( bwrite,0,count);
else return Encoding.Default.GetString(bwrite);
}
上面的这个方法就可以获得一个字符串中相应的字节数的子串。
比如:
str1="中华人民共和国?" ;
str2="abcdefghijklmn";
分别调用上述函数,
str1=getCountStr(str1,12);
str2=getCountStr(str2,12);
就会返回
str1的值为 中华人民共和
str2的值为 abcdefghijkl
注:另有BitConverter.ToString(System.Text.Encoding.Unicode.GetBytes("abc中国")).Replace("00","").Replace("-","").Length \2
不同的编码,对ABC 编码不一样,比如 用Unicode,他编码的时候,每个字符都会翻译称两个byte数组, 对于中文是两个都大于0的字符,而英文则是asciii 一个,0 一个,所以"abc中国" 应该翻译成
97 00 98 00 99 00 xx xx xx xx, 这里xx 应该都是不为0
希望统计的就是英文字符占一位, 中文占两位. 所以我把这些byte先用string 表示,然后替换掉00