参考答案
一、String与byte[]之间的相互转换
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” );
二、byte[]和String互相转换时,要注意输入数据的类型
1. 当使用String类的时候,将String作为输入类型;
2. 当使用Base64类的时候,使用byte数组作为输入类型。
以上,是Java面试题【 String与byte[]之间如何转换】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—