Java - byte[] 和 String互相轉換


通過用例學習Java中的byte數組和String互相轉換,這種轉換可能在很多情況需要,比如IO操作,生成加密hash碼等等。

除非覺得必要,否則不要將它們互相轉換,他們分別代表了不同的數據,專門服務於不同的目的,通常String代表文本字符串,byte數組針對二進制數據

通過String類將String轉換成byte[]或者byte[]轉換成String

用String.getBytes()方法將字符串轉換為byte數組,通過String構造函數將byte數組轉換成String

注意:這種方式使用平台默認字符集

復制代碼
package com.bill.example; public class StringByteArrayExamples { public static void main(String[] args) { //Original String String string = "hello world"; //Convert to byte[] byte[] bytes = string.getBytes(); //Convert back to String String s = new String(bytes); //Check converted string against original String System.out.println("Decoded String : " + s); } }
復制代碼

輸出:

hello world

通過Base64 將String轉換成byte[]或者byte[]轉換成String[Java 8]

可能你已經了解 Base64 是一種將二進制數據編碼的方式,正如UTF-8和UTF-16是將文本數據編碼的方式一樣,所以如果你需要將二進制數據編碼為文本數據,那么Base64可以實現這樣的需求

從Java 8 開始可以使用Base64這個類

復制代碼
import java.util.Base64;
public class StringByteArrayExamples { public static void main(String[] args) { //Original byte[] byte[] bytes = "hello world".getBytes(); //Base64 Encoded String encoded = Base64.getEncoder().encodeToString(bytes); //Base64 Decoded byte[] decoded = Base64.getDecoder().decode(encoded); //Verify original content System.out.println( new String(decoded) ); } }
復制代碼

輸出:

hello world

總結

在byte[]和String互相轉換的時候你應該注意輸入數據的類型

  1. 當使用String類的時候,將String作為輸入類型
  2. 當使用Base64類的時候,使用byte數組作為輸入類型


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM