Java中String与byte[]之间的转换
(2014-10-16 14:04:44)
标签:
string转byte[]byte[]转stringjava |
分类: Java/Android |
在Java中,一般的文件读写,以及发送信息,要求的都是byte格式的数据,但是我们习惯使用的数据类型是String类型,这样必然导致了,方便使用后,事后进行转码的方法。
1.String转byte[]格式
String类从JDK1.1之后,自带了三个String类转换成byte[]格式的函数,其函数原型如下:
//使用平台默认的编码方式将字符串编码为byte序列
byte[] getBytes();
//使用指定的Charset编码将字符串编码为byte序列
byte[] getBytes(Charset charset);
//使用字符串指定的编码方式将字符串编码为byte序列
byte[] getBytes(String charsetName);
Java中完全支持的编码为下列几个
US-ASCII |
7 位 ASCII 字符,也叫作 ISO646-US、Unicode 字符集的基本拉丁块 |
ISO-8859-1 |
ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 |
UTF-8 |
8 位 UCS 转换格式 |
UTF-16BE |
16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 |
UTF-16LE |
16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 |
UTF-16 |
16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 |
一般现在统一使用的UTF-8编码方式,在这种方式下,中文不会出现乱码。
例如:
String message = “你好,这是编码测试abc”;
//将其转换成”UTF-8”编码的byte格式
byte convert[] = message.getBytes( “UTF-8” );
2.byte[]转换成String类
只需用byte新建一个String类即可,String类提供了多种构造函数,用于从byte[]新建String,下面只提及三种,依次对应上面三种,其他的请自行查询API
//使用平台默认编码方式解码byte数组以构造String
String(byte[] bytes);
//使用指定的charset方式解码byte数组以构造String
String(byte[] bytes, Charset charset);
//使用String指定的方式解码byte数组以构造String
String(byte[] bytes, String charsetName);
比如要将上面的byte数组还原可以如下操作:
String convertAgain = new String( convert, “UTF-8” );