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();
// print the byte[] elements
System.out.println("String to byte array: " + Arrays.toString(byteArr));
}
}
下图显示了运行上述程序时的输出。我们还可以使用以下代码获取字节数组。
byte[] byteArr = str.getBytes("UTF-8");
但是如果我们提供 Charset 名称,那么我们将不得不捕获UnsupportedEncodingException
异常或抛出它。更好的方法是使用StandardCharsets
Java 1.7 中引入的类,如下所示。
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);
}
}
下图显示了上述程序产生的输出。你注意到我在创建字节数组时提供了 char 吗?它之所以有效是因为自动装箱,并且字符“P”在字节数组中被转换为 80。这就是为什么字节数组到字符串转换的输出相同。String 还有一个构造函数,我们可以在其中提供字节数组和 Charset 作为参数。因此,下面的代码也可用于在 Java 中将字节数组转换为字符串。
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 中将字节数组转换为字符串的全部内容。
您可以从我们的GitHub 存储库中查看更多数组示例。