我正在尝试为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();
方法之间有什么区别?
先谢谢您,
帕纳焦蒂斯
答案 0 :(得分:3)
问题是Charset.encode()
返回一个ByteBuffer
,而ByteBuffer.array()
返回一个 whole 内部数组,如果后备数组较大,则结尾处为零比缓冲区的内容要多。
那么使用哪种方法?如果您正在使用Buffers
,那么Charset.encode()
很有用。如果要使用数组,则需要使用String.getBytes(charset)
。