为什么Java I / O中的字节可以表示字符?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么Java I / O中的字节可以表示字符?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1610字,纯文字阅读大概需要3分钟。
内容图文
![为什么Java I / O中的字节可以表示字符?](/upload/InfoBanner/zyjiaocheng/701/f9576b3e008648e5819c922aba99e744.jpg)
为什么Java I / O中的字节可以表示字符?
我看到这些字符只是ASCII.然后它不是动态的,对吧?
这有什么解释吗?
字节流和字符流有什么区别?
解决方法:
字节不是字符.独自一人,他们甚至不能代表人物.
在计算方面,“字符”是数字代码(或代码序列)与编码或字符集的配对,其定义代码如何映射到真实世界字符(或空白或控制代码).
只有与编码配对后,字节才能表示字符.对于某些编码(如ASCII或ISO-8859-1),一个字节可以表示一个字符…并且许多编码甚至是ASCII兼容的(这意味着0到127的字符代码与ASCII的定义对齐).但如果没有原始地图,你就不知道你拥有什么.
没有编码,字节只是8位整数.
您可以通过强制对它们进行编码来以任何方式解释它们.这正是您在将字节转换为char时所做的事情,例如新的String(myBytes)等,甚至在文本编辑器中编辑包含字节的文件. (在这种情况下,它是应用编码的编辑器.)这样做,你甚至可能得到一些有意义的东西.但是,如果不知道原始编码,您无法确切知道这些字节的意图.
它甚至可能不是文本.
例如,考虑字节序列0x48 0x65 0x6c 0x6c 0x6f 0x2e.它可以解释为:
>你好. ASCII和兼容的8位编码;
>以一些8位编码的晚餐,我只是为了证明这一点;
>?汬漮in big-endian UTF-16 *;
>一个钢蓝色像素,后面是一个灰黄色的像素,RGB;
>以某种未知处理器的汇编语言加载r101,[0x6c6c6f2e];
或者其他一百万件事.仅这六个字节无法告诉您哪种解释是正确的.
至少使用文本,这就是编码的用途.
但是,如果您希望解释正确,则需要使用相同的编码来解码用于生成它们的字节.这就是了解文本编码方式如此重要的原因.
字节流和字符流之间的区别在于字符流尝试使用字符而不是字节. (它实际上适用于UTF-16代码单元.但是因为我们知道编码,这对于大多数用途来说已经足够了.)如果它包裹在字节流中,则字符流使用编码来转换从基础字节流读取的字节to chars(或写入流到字节的字符).
*注意:我不知道“?汬漮”是亵渎甚至是否有任何意义……但除非你把它编程为中文,否则电脑也不会.
内容总结
以上是互联网集市为您收集整理的为什么Java I / O中的字节可以表示字符?全部内容,希望文章能够帮你解决为什么Java I / O中的字节可以表示字符?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。