字符串到字节数组,字节数组到Java中的字符串

时间:2020-02-23 14:37:26  来源:igfitidea点击:

今天,我们将学习如何在Java中将String转换为字节数组。
我们还将学习如何在Java中将字节数组转换为String。

字符串到字节数组

我们可以使用平台的默认字符集,使用String类的getBytes()方法将字符串编码为字节序列。
这个方法是重载的,我们也可以传递Charset作为参数。

这是一个简单的程序,显示了如何在Java中将String转换为字节数组。

package com.theitroad.util;

import java.util.Arrays;

public class StringToByteArray {

	public static void main(String[] args) {
		String str = "hyman";
		byte[] byteArr = str.getBytes();
		//print the byte[] elements
		System.out.println("String to byte array: " + Arrays.toString(byteArr));
	}
}

下图显示了运行上述程序时的输出。

我们还可以使用以下代码获取字节数组。

byte[] byteArr = str.getBytes("UTF-8");

但是,如果我们提供了字符集名称,那么我们将不得不捕获UnsupportedEncodingException异常或者将其抛出。
更好的方法是使用Java 1.7中引入的" StandardCharsets"类,如下所示。

byte[] byteArr = str.getBytes(StandardCharsets.UTF_8);

在Java中,这是将String转换为字节数组的所有不同方法。

Java字节数组到字符串

让我们看一个简单的程序,该程序显示如何在Java中将字节数组转换为String。

package com.theitroad.util;

public class ByteArrayToString {

	public static void main(String[] args) {
		byte[] byteArray = { 'P', 'A', 'N', 'K', 'A', 'J' };
		byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };

		String str = new String(byteArray);
		String str1 = new String(byteArray1);

		System.out.println(str);
		System.out.println(str1);
	}
}

下图显示了以上程序产生的输出。

您是否注意到我在创建字节数组时提供了char?

由于自动装箱,char'P'在字节数组中被转换为80,因此可以正常工作。
这就是为什么字节数组到字符串转换的输出相同的原因。

字符串还有一个构造函数,我们可以其中提供字节数组和Charset作为参数。
因此,以下代码也可以用于在Java中将字节数组转换为String。

String str = new String(byteArray, StandardCharsets.UTF_8);

String类还具有一种将字节数组的子集转换为String的方法。

byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };
String str = new String(byteArray1, 0, 3, StandardCharsets.UTF_8);

上面的代码非常好," str"值为" PAN"。
这就是在Java中将字节数组转换为String的全部内容。