java中getBytes方法得到的字节数组里面每一个byte代表的是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中getBytes方法得到的字节数组里面每一个byte代表的是啥?相关的知识,希望对你有一定的参考价值。
我的意思是byte里面值代表的是什么意思,而不是里面有什么数字 ,如果字符串里有汉字呢?又代表什么? 请详细说明 ,谢谢了。
单个的byte值!范围是-128—127getBytes方法会把你前面的这个值按照默认的字符编码拆成字节,然后保存在byte数组中。
汉字的话,他也会根据一定的编码方式拆成字节然后存储! 参考技术A 就是把你的数据拆分成 一个字节一个字节的存放,一个byte就是数据的一小段啊
比如一个字符串 "abcd" getBytes的到的结果就是 97 98 99 100,
每个数就是一个字节(Byte) 参考技术B -128—127的一个数
Java 的 String.GetBytes(Charset) 中的 UTF-8
【中文标题】Java 的 String.GetBytes(Charset) 中的 UTF-8【英文标题】:UTF-8 in Java's String.GetBytes(Charset) 【发布时间】:2016-02-14 20:52:43 【问题描述】:我阅读了一些关于 Java 中 String.getBytes(Charset) 方法的文档。
用于将String转换为字节数组(字节类型可以取值-2^7到2^7-1)。
据我所知,UTF-8 字符集中的每个字符可以使用 1-4 个字节。如果 UTF-8 字符集中的字符编码大于 2^7-1 会怎样?
我试过了
String s="Hélô"
然后我得到了这样的'HélÃ'':
String sr=new String(s.getBytes("UTF-8"),Charset.forName("UTF-8"));
我希望它返回原始值“Hélô”。
谁能描述一下?谢谢。 (对不起我的英语)
【问题讨论】:
应该没问题。您确定原始字符串是合适的吗?如果你有 UTF-8 源代码但编译为 ISO-8859-1,你会得到那个结果。我建议您制作一个简短但完整的程序来演示问题,包括证明结果不等于源字符串。 【参考方案1】:正如 Jon 已经说过的,原因是您使用了不同的编码。在 UTF-8 编码中,字符 é
和 ô
分别被编码为两个字节。
ISO-8859-1: H é l ô
bytes: 48 E9 6C F4
UTF-8 : H é l ô
bytes: 48 C3A9 6C C3B4
您的错误字符串结果示例如下所示
UTF-8 bytes interpreted as ISO-8859-1
H à © l à ´
48 C3 A9 6C C3 B4
【讨论】:
以上是关于java中getBytes方法得到的字节数组里面每一个byte代表的是啥?的主要内容,如果未能解决你的问题,请参考以下文章