String与byte[]之间如何转换

参考答案

一、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—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧