java中getBytes方法得到的字节数组里面每一个byte代表的是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中getBytes方法得到的字节数组里面每一个byte代表的是啥?相关的知识,希望对你有一定的参考价值。

我的意思是byte里面值代表的是什么意思,而不是里面有什么数字 ,如果字符串里有汉字呢?又代表什么? 请详细说明 ,谢谢了。

单个的byte值!范围是-128—127
getBytes方法会把你前面的这个值按照默认的字符编码拆成字节,然后保存在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代表的是啥?的主要内容,如果未能解决你的问题,请参考以下文章

java里面byte数组和String字符串怎么转换

关于java中String.getBytes()问题

getBytes()详解.RP

java里面byte数组和String字符串怎么转换

java怎么将string转换成byte数组

String.getBytes()