一個字節是 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。