A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 重新开始 中级黑马   /  2013-10-18 21:11  /  1831 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 重新开始 于 2013-10-19 09:19 编辑

string str = "abcdef串";str的长度为7,但字节为8,怎样算出字节8?求详解!

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

10 个回复

倒序浏览
在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
string str = "abcdef串";
解析:abcdef是6个英文字母,所以是6个字节
串:是一个汉字算2个字节,所以一共八个字节

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
本帖最后由 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();

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
每个汉字占两个字节~

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
字符和字节是不同的,字符是指一个单个字符,‘串’就是一个字符,但是字节是存储单元,不同的编码形式字节会不同,楼主的情况‘串’占两个字节。所以长度是7,字节是8。

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
普通字母标点占一个字节,汉字两个字节,abcdef+串,6+2个字节,字符是7个

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
C#中无论英文或者中午或者标点,每个都算两个字节长度,所以字数是7,字节数是8.
就类此于C中的wchar。

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
nooooy 中级黑马 2013-10-19 08:55:40
8#
  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();
复制代码

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
"串"是按两个字节算的!

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
Liu阳 发表于 2013-10-18 21:25
string str = "abcdef串";
            Console.WriteLine(str.Length);   //这个是7
            Console. ...

嗯,是啊,作老师的课堂练习,发现用这个编码,传一个汉字,会变成3byte
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马