關於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互相轉換的時候你應該註意輸入數據的類型
- 當使用String類的時候,將String作為輸入類型
- 當使用Base64類的時候,使用byte數組作為輸入類型
補充:下面看下java的byte[]與String相互轉換
String轉byte[]
byte[] sInput = new byte[0]; try { // 可以指定編碼,默認也隻UTF-8 sInput = "這是內容".getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
byte[]轉String
// 這裡sInput是上面byte[],也是可以指定編碼,默認也是UTF-8 String str = new String(sInput, "UTF-8")
byte[]打印到控制臺看
org.bouncycastle.pqc.math.linearalgebra.ByteUtils.toBinaryString(sInput) // 這個方法的源碼 public static String toBinaryString(byte[] var0) { String var1 = ""; for(int var2 = 0; var2 < var0.length; ++var2) { byte var3 = var0[var2]; for(int var4 = 0; var4 < 8; ++var4) { int var5 = var3 >>> var4 & 1; var1 = var1 + var5; } if (var2 != var0.length - 1) { var1 = var1 + " "; } return var1; }
到此這篇關於Java中byte[] 和 String互相轉換的文章就介紹到這瞭,更多相關java byte[] 和 String互相轉換內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!