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

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

字符串转字节数组

我们可以使用String类的getBytes()方法,使用平台的默认字符集将字符串编码为字节序列。这个方法是重载的,我们还可以传递Charset作为参数。下面是一个简单的程序,演示了如何在Java中将字符串转换为字节数组。

package com.journaldev.util;

import java.util.Arrays;

public class StringToByteArray {

	public static void main(String[] args) {
		String str = "PANKAJ";
		byte[] byteArr = str.getBytes();
		// 打印byte[]元素
		System.out.println("String to byte array: " + Arrays.toString(byteArr));
	}
}

下面的图像显示了我们运行上述程序时的输出。我们还可以使用以下代码获取字节数组。

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

然而,如果我们提供Charset名称,那么我们将不得不捕获UnsupportedEncodingException 异常或抛出它。更好的方法是使用Java 1.7引入的StandardCharsets类,如下所示。

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

这就是在Java中将字符串转换为字节数组的各种方法。

Java字节数组转换为字符串

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

package com.journaldev.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);
	}
}

下面的图片显示了上述程序产生的输出。 你是否注意到我在创建字节数组时提供了字符?这是因为自动装箱,字符’P’被转换为字节数组中的80。这就是为什么字节数组转换为字符串时输出是相同的原因。字符串也有一个构造函数,我们可以提供字节数组和字符集作为参数。所以下面的代码也可以用来在Java中将字节数组转换为字符串。

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

String类还有一个方法,可以将字节数组的子集转换为字符串。

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

上面的代码是完全正确的,’str’值将是’PAN’。这就是关于在Java中将字节数组转换为字符串的全部内容。

你可以从我们的GitHub仓库检出更多数组示例。

参考:getBytes API文档

Source:
https://www.digitalocean.com/community/tutorials/string-byte-array-java