Java中字节和字符的转换

在Java的内存中进行字节和字符的数据类型相互转换非常常见,也有多种方法进行转换,在此处为大家一一介绍。

1. String

String类提供了转换到字节的方法,也提供了字节转换到字符的构造方法,代码入下所示:

String str = "这是一段字符串";
byte[] bytes = str.getBytes("UTF-8");

String newStr = new String(bytes, "UTF-8");

2.ByteToCharConverter & CharToByteConverter

这两个类分别提供converAll()方法实现字节和字符的转换,代码如下所示:

ByteToCharConverter charConverter = ByteToCharConverter.getConverter("UTF-8");
char[] c = charConverter.convertAll(byteArray);

CharToByteConverter byteConverter = CharToByteConverter.getConverter("UTF-8");
byte[] b = byteConverter.convertAll(c);

3.Charset

方法2中的两个类已经被Charset取代,Charset提供encode以及decode方法,分别对应char[]到byte[]的编码已经byte[]到char[]的编码,代码如下:

String str = "这是一段字符串";

Charset charset = Charset.forName("UTF-8");
ByteBuffer byteBuffer = charset.encode(str);
CharBuffer charBuffer = charset.decode(byteBuffer);

4.ByteBuffer

ByteBuffer提供char和byte之间的软转换,他们之间的转换不需要编码与解码,只是把一个16bit的char拆分成2个8bit的byte表示,他们的实际值并没有被修改,仅仅是数据的数据类型做了转换,代码如下:

ByteBuffer heapByteBuffer = ByteBuffer.allocate(1024);
ByteBuffer byteBuffer = heapByteBuffer.putChar(c);

你可能感兴趣的:(Java中字节和字符的转换)