一个字节是 8 位二进制数据,因此字节数组是用于存储二进制数据集合的字节数组。在 Java 中将字节数组更改为字符串有多种方法,您可以使用 JDK 中的方法,也可以使用开源补充 API,例如阿帕奇公地和谷歌 Guava 。这些 API 提供了至少两组方法来从字节数组创建字符串;一个使用默认平台编码,另一个采用字符编码。
将字节数组转换为字符串的不同方法
- 使用UTF-8编码
- 使用字符串类构造函数
方法一:U唱歌UTF-8编码
这也是在任何编程语言中将字节转换为字符时指定字符编码的最佳实践之一。您的字节数组可能包含不可打印的 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);
}
}
[71, 101, 101, 107, 115, 102, 111, 114, 103, 101, 101, 107, 115] Geeksforgeeks
情况2:使用字符编码
我们知道一个字节包含 8 位,最多可以有 256 个不同的值。这对于仅使用前 7 位的 ASCII 字符集来说效果很好。对于超过 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”).
示例 2:
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
方法2:使用String类构造函数
Java
// Java Program to Illustrate Conversion of
// Byte Array to String
// Using String Class Constructor
// Class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Try block to check for exceptions
try {
// Getting bytes of input byte array
// using getBytes() method
byte[] input = "GeeksforGeeks".getBytes();
// Creating a corresponding string
String str = new String(input);
// Printing the above string
System.out.println(str);
}
// Catch block to handle exceptions
catch (Exception e) {
// Display exceptions along with line number
// using printStackTrace() method
e.printStackTrace();
}
}
}
GeeksforGeeks
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.
相关用法
- Java Byte Array转Image用法及代码示例
- Java Byte Array转Object用法及代码示例
- Java Byte Array转Writer用法及代码示例
- Java Byte Array转Long用法及代码示例
- Java Byte Array转Hex String用法及代码示例
- Java Byte Array转JSON用法及代码示例
- Java Byte compareUnsigned()用法及代码示例
- Java Byte decode()用法及代码示例
- Java Byte parseByte()用法及代码示例
- Java Byte toUnsignedInt()用法及代码示例
- Java Byte toUnsignedLong()用法及代码示例
- Java Byte valueOf()用法及代码示例
- Java Byte byteValue()用法及代码示例
- Java Byte compare()用法及代码示例
- Java Byte compareTo()用法及代码示例
- Java Byte doubleValue()用法及代码示例
- Java Byte equals()用法及代码示例
- Java Byte floatValue()用法及代码示例
- Java Byte hashCode()用法及代码示例
- Java Byte intValue()用法及代码示例
- Java Byte longValue()用法及代码示例
- Java Byte shortValue()用法及代码示例
- Java Byte toString()用法及代码示例
- Java ByteArrayOutputStream close()用法及代码示例
- Java ByteBuffer getDouble()用法及代码示例
注:本文由纯净天空筛选整理自rachanapriyadarshnisamal大神的英文原创作品 Java Program to Convert Byte Array to String。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。