char[]与byte[]相互转换
Charset类
Charset提供encode与decode分别对应char[]到byte[]的编码和byte[]到char[]的解码,具体代码如下:
Chaeset charset=Charset.forName("UTF-8");
ByteBuffer byteBuffer=charset.encode(String);//why string?
byte[] ba=byteBuffer.array();//转化成byte[]
CharBuffer charBuffer=charset.decode(byteBuffer);
char[] ca=charBuffer.array();//转化成char[]
这里编码与解码都在一个类中完成,通过 forName 设置编解码字符集,这样更容易统一编码格式。
ByteBuffer 类
ByteBuffer类提供一种char和byte之间的软转换(char转byte),他们之间转换不需要编码与解码,只是把一个16bit的char拆分成两个8bit的byte表示,他们的实际值并没有被修改,仅仅是数据类型做了转换。具体代码如下:
ByteBuffer heapByteBuffer=ByteBuffer.allocate(1024);
ByteBuffer byteBuffer=heapByteBuffer.putChar(c);//c为char[]