今天我们将学习如何在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仓库检出更多数组示例。
Source:
https://www.digitalocean.com/community/tutorials/string-byte-array-java