黑马程序员技术交流社区

标题: 字符串长度?字节长度? [打印本页]

作者: 重新开始    时间: 2013-10-18 21:11
标题: 字符串长度?字节长度?
本帖最后由 重新开始 于 2013-10-19 09:19 编辑

string str = "abcdef串";str的长度为7,但字节为8,怎样算出字节8?求详解!
作者: ╰┄轩、辕_ヤ    时间: 2013-10-18 21:18
在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
string str = "abcdef串";
解析:abcdef是6个英文字母,所以是6个字节
串:是一个汉字算2个字节,所以一共八个字节
作者: Liu阳    时间: 2013-10-18 21:25
本帖最后由 Liu阳 于 2013-10-18 21:27 编辑

string str = "abcdef串";
            Console.WriteLine(str.Length);   //这个是7
            Console.WriteLine(System.Text.Encoding.UTF8.GetByteCount(str));  //这个我得9 因为我使用了UTF-8编码集 你可以试试别的
            Console.ReadKey();
作者: 小人渣子    时间: 2013-10-18 23:06
每个汉字占两个字节~
作者: 蜗牛强    时间: 2013-10-19 00:01
字符和字节是不同的,字符是指一个单个字符,‘串’就是一个字符,但是字节是存储单元,不同的编码形式字节会不同,楼主的情况‘串’占两个字节。所以长度是7,字节是8。
作者: 自由の风    时间: 2013-10-19 08:32
普通字母标点占一个字节,汉字两个字节,abcdef+串,6+2个字节,字符是7个
作者: 荣右铭    时间: 2013-10-19 08:48
C#中无论英文或者中午或者标点,每个都算两个字节长度,所以字数是7,字节数是8.
就类此于C中的wchar。
作者: nooooy    时间: 2013-10-19 08:55
  1.    string sen1 = "abcdef";
  2.             Console.WriteLine(System.Text.Encoding.Default.GetByteCount(sen1));//6字节
  3.             string sen2 = "串";
  4.             Console.WriteLine(System.Text.Encoding.Default.GetByteCount(sen2));//2字节
  5.             string sen3 = "abcdef串";
  6.             Console.WriteLine(System.Text.Encoding.Default.GetByteCount(sen3));//8字节
  7.             Console.ReadKey();
复制代码

作者: guo329838627    时间: 2013-10-19 11:45
"串"是按两个字节算的!
作者: 大虾挂了    时间: 2013-10-19 13:56
Liu阳 发表于 2013-10-18 21:25
string str = "abcdef串";
            Console.WriteLine(str.Length);   //这个是7
            Console. ...

嗯,是啊,作老师的课堂练习,发现用这个编码,传一个汉字,会变成3byte




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2