當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Byte Array轉String用法及代碼示例


一個字節是 8 位二進製數據,因此字節數組是用於存儲二進製數據集合的字節數組。在 Java 中將字節數組更改為字符串有多種方法,您可以使用 JDK 中的方法,也可以使用開源補充 API,例如阿帕奇公地和穀歌 Guava 。這些 API 提供了至少兩組方法來從字節數組創建字符串;一個使用默認平台編碼,另一個采用字符編碼。

將字節數組轉換為字符串的不同方法

  1. 使用UTF-8編碼
  2. 使用字符串類構造函數

方法一: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.


相關用法


注:本文由純淨天空篩選整理自rachanapriyadarshnisamal大神的英文原創作品 Java Program to Convert Byte Array to String。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。