当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。