将字节数组转换为字符串的Java程序
在Java有多种将字节数组更改为 String 的方法,您可以使用 JDK 中的方法,也可以使用开源补充 API,如 Apache commons 和 Google Guava。这些 API 至少提供了两组方法来从字节数组创建字符串;一种使用默认平台编码,另一种使用字符编码。
这也是在任何编程语言中将字节转换为字符时指定字符编码的最佳实践之一。您的字节数组可能包含不可打印的 ASCII字符。我们先来看看 JDK 将 byte[] 转换为字符串。一些程序员还推荐使用 Charset 而不是 String 来指定字符编码,例如使用 StandardCharsets.UTF_8 代替“UTF-8”主要是为了避免在最坏的情况下不支持的编码异常。
案例 1:没有字符编码
我们可以将字节数组转换为 ASCII字符集的字符串,甚至无需指定字符编码。这个想法是将 byte[] 传递给字符串。如下例所示:
例子
Java
// Java Program to Convert Byte Array to String
// Without character encoding
// Importing required classes
import java.io.IOException;
import java.util.Arrays;
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
throws IOException
{
// Getting bytes from the custom input string
// using getBytes() method and
// storing it in a byte array
byte[] bytes = "Geeksforgeeks".getBytes();
System.out.println(Arrays.toString(bytes));
// Creating a string from the byte array
// without specifying character encoding
String string = new String(bytes);
// Printing the string
System.out.println(string);
}
}
Java
// Java Program to Convert Byte Array to String
// With character encoding
// Importing required classes
import java.io.IOException;
import java.nio.charset.StandardCharsets;
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
throws IOException
{
// Custom input string is converted into array of
// bytes and stored
byte[] bytes = "Geeksforgeeks".getBytes(
StandardCharsets.UTF_8);
// Creating a string from the byte array with
// "UTF-8" encoding
String string
= new String(bytes, StandardCharsets.UTF_8);
// Print and display the string
System.out.println(string);
}
}
[71, 101, 101, 107, 115, 102, 111, 114, 103, 101, 101, 107, 115]
Geeksforgeeks
案例 2:使用字符编码
我们知道一个字节包含 8 位,最多可以有 256 个不同的值。这适用于 ASCII字符集,其中仅使用前 7 位。对于超过 256 个值的字符集,我们应该明确指定编码,它告诉如何将字符编码为字节序列。
Note: Here we are using StandardCharsets.UTF_8 to specify the encoding. Before Java 7, we can use the Charset. for Name(“UTF-8”).
例子
Java
// Java Program to Convert Byte Array to String
// With character encoding
// Importing required classes
import java.io.IOException;
import java.nio.charset.StandardCharsets;
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
throws IOException
{
// Custom input string is converted into array of
// bytes and stored
byte[] bytes = "Geeksforgeeks".getBytes(
StandardCharsets.UTF_8);
// Creating a string from the byte array with
// "UTF-8" encoding
String string
= new String(bytes, StandardCharsets.UTF_8);
// Print and display the string
System.out.println(string);
}
}
Geeksforgeeks
这就是将字节数组转换为Java字符串的全部内容。
Conclusion: We should focus on the type of input data when working with conversion between byte[] array and String in Java.
- Use String class when you input data is string or text content.
- Use Base64 class when you input data in a byte array.