String.getBytes()和Charset.encode()

时间:2019-09-24 07:50:19

标签: java android

我正在尝试为Android编写一个库,以对数据进行编码和解码。

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

  

byte [0] = 80
byte [1] = 97
byte [2] = 110
byte [3] = 97
byte [4] = 103 < br /> byte [5] = 111
byte [6] = 115
byte [7] = 0
byte [8] = 0
byte [9] = 0 < br /> 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 < br /> byte [5] = 111
byte [6] = 115

我不知道原因。

那么您能否解释一下(或帮助我如何使用Google)Charset.defaultCharset().encode().array();String.getBytes();方法之间有什么区别?

先谢谢您,
帕纳焦蒂斯

1 个答案:

答案 0 :(得分:3)

问题是Charset.encode()返回一个ByteBuffer,而ByteBuffer.array()返回一个 whole 内部数组,如果后备数组较大,则结尾处为零比缓冲区的内容要多。

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

相关问题