gpt4 book ai didi

java - String.getBytes() 和 Charset.encode() 之间的区别

转载 作者:行者123 更新时间:2023-12-01 19:35:06 24 4
gpt4 key购买 nike

我正在尝试为 android 编写一个库来编码和解码数据。

首先我使用了 Charset.defaultCharset().encode("Panagos").array(); 结果我得到了以下字节序列

byte[0] = 80
byte[1] = 97
byte[2] = 110
byte[3] = 97
byte[4] = 103
byte[5] = 111
byte[6] = 115
byte[7] = 0
byte[8] = 0
byte[9] = 0
byte[10] = 0
byte[11] = 0
byte[12] = 0
byte[13] = 0

我注意到返回的数组最后多了 7 个 0。

接下来我使用了"Panagos".getBytes();,结果是

byte[0] = 80
byte[1] = 97
byte[2] = 110
byte[3] = 97
byte[4] = 103
byte[5] = 111
byte[6] = 115

但我不知道原因。

那么你能解释一下(或者帮助我如何谷歌)Charset.defaultCharset().encode().array();String.getBytes之间有什么区别吗(); 方法?

提前谢谢您,
帕纳吉奥蒂斯

最佳答案

问题是 Charset.encode() 返回一个 ByteBuffer,而 ByteBuffer.array() 返回整个 内部数组,如果后备数组大于缓冲区的内容,则末尾为零。

那么该使用哪种方法呢?如果您使用 Buffers,那么 Charset.encode() 很有用。如果您使用数组,那么您将需要使用String.getBytes(charset)

关于java - String.getBytes() 和 Charset.encode() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58075497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com