字符,字节整理分析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1个字节 byte=8bit(比特/位 ) 1bit=0.125B字节 1个汉字两个字节 16bit,2B. 字符 :汉字 ,数字 ,字母等 Byte,bit 是存储单位 Bit——比特 B——字节 KB——千字节 MB——兆字节 GB——吉字节 TB——太字节 1B 8 Bit 1KB=1024B 1MB=1024KB 1GB=1024MB 1TB 1024GB inputStream 读的是字节流,inputStreamReader 是inputStream到Reader的桥梁。Reader 支持16 位的Unicode 字符输出, InputStream支持8 位的字符输出。InputStream 用于读入 ASCII 字符和二进制数据。 中文不止 2 的 8次方个 255个字符。所以一个字节肯定不能表示。 你可能回想两个字节 2 的 16次方 65 536。Gbk收录的字数没有超过 这数量。因此 GBK、GB2312 收编的汉字占2 个字节。但是没这么简 单 ,除了中文外还有其他的文字。 常用中文字符用 utf-8编码占用 3个字节 (大约 2万多字 ),但超大字 符集中的更大多数汉字要占4 个字节 (在 unicode 编码体系中 , U+20000开始有 5万多汉字 )。 我们知道机器只知道字节,而字符却是语义上的单位,它是有编码的,一个字符可能编码成 1个2 个甚至3 个4 个字节。这跟字符集编码有关系,英文字母和数字是单字节,但汉字这 些自然语言中的字符是多字节的。一个字节只能表示255 个字符,不可能用于全球那么多 种自然语言的处理,因此肯定需要多字节的存储方式。 当我们在处理 Java 时,比如 InputStream, OutputStream 它们是处理字节流的,就是说 假设所有东西都是二进制的字节,而 Reader,Writer 则是字符流,它涉及到字符集的问题, 因为把一个字符保存到磁盘或读取出来需要指定一个字符集,平时你的代码没有指定是因为 JVM 读取操作系统默认的字符集,有时候 (特别是数据交换的时候)可能这个默认字符集 不正确。 在 Java 中,它的内核是使用 Unicode,也就是说它记住了每个字符的 Unicode 内部编码 (一串数字,全球唯一,各国语言常用字符全部在里面,比如康熙字典这种古董中的多数汉 字都在其中),只有把字符串通过网络发送出去或保存到磁盘上或反过来读取时才有字符编 码成字节的过程,因为一个字符多个字节我们需要知道每个字符的这几个字节是按什么顺序 排列的,第1个字节排前面还是排后面,多个字符串在一起时在读取时怎么识别出哪几个 字节凑在一起是一个字符,这就是字符集编码方案了,UTF8, GBK, GB2312, GB18030, BIG5,之类的都是其中一种字符集编码方案。 write(byte[] b,int off,int len)中的 off 偏移量具体指的是什么 ? 分享|2011-10-3122:15 梦翔吉吉|浏览 2688 次 汇编语言 String str hello everybody!; byte[] words str.getBytes(); fos new FileOutputStream(c:/test.txt);//此文件输出流对 象fos 就和目标数据源(c:/test.txt)联系起来了。 fos.write(words, 0, words.length);//利用write 方法将数据写 入到文件中去 System.out.println(文件已更新!); 这是代码,我把0 改成别的数就会出现异常。求高人讲解!! 简单来说,write(byte[] b, int off, int len)就是将数组 b 中的 len 个字 节按顺序写入输出流。所以如果 b 为 null,则抛出 NullPointerExcept ion。如果 off 为负,或 len 为负,又或者 off+len 大于数组 b 的长度, 则抛出 IndexOutOfBoundsException。如果 len 为零,则不写入字节。 否则,首先写入字节 b[off],然后写入字节 b[off+1],依此类推;最后 一个写入字节是

文档评论(0)

***** + 关注
实名认证
文档贡献者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档