關(guān)于Java中byte[]?和?String互相轉(zhuǎn)換問題
通過用例學(xué)習(xí)Java中的byte數(shù)組和String互相轉(zhuǎn)換,這種轉(zhuǎn)換可能在很多情況需要,比如IO操作,生成加密hash碼等等。
除非覺得必要,否則不要將它們互相轉(zhuǎn)換,他們分別代表了不同的數(shù)據(jù),專門服務(wù)于不同的目的,通常String代表文本字符串,byte數(shù)組針對(duì)二進(jìn)制數(shù)據(jù)
通過String類將String轉(zhuǎn)換成byte[]或者byte[]轉(zhuǎn)換成String
用String.getBytes()方法將字符串轉(zhuǎn)換為byte數(shù)組,通過String構(gòu)造函數(shù)將byte數(shù)組轉(zhuǎn)換成String
注意:這種方式使用平臺(tái)默認(rèn)字符集
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轉(zhuǎn)換成byte[]或者byte[]轉(zhuǎn)換成String[Java 8]
可能你已經(jīng)了解 Base64 是一種將二進(jìn)制數(shù)據(jù)編碼的方式,正如UTF-8和UTF-16是將文本數(shù)據(jù)編碼的方式一樣,所以如果你需要將二進(jìn)制數(shù)據(jù)編碼為文本數(shù)據(jù),那么Base64可以實(shí)現(xiàn)這樣的需求
從Java 8 開始可以使用Base64這個(gè)類
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
總結(jié)
在byte[]和String互相轉(zhuǎn)換的時(shí)候你應(yīng)該注意輸入數(shù)據(jù)的類型
- 當(dāng)使用String類的時(shí)候,將String作為輸入類型
- 當(dāng)使用Base64類的時(shí)候,使用byte數(shù)組作為輸入類型
補(bǔ)充:下面看下java的byte[]與String相互轉(zhuǎn)換
String轉(zhuǎn)byte[]
byte[] sInput = new byte[0];
try {
? ? // 可以指定編碼,默認(rèn)也只UTF-8
? ? sInput = "這是內(nèi)容".getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
? ? e.printStackTrace();
}byte[]轉(zhuǎn)String
// 這里sInput是上面byte[],也是可以指定編碼,默認(rèn)也是UTF-8 String str = new String(sInput, "UTF-8")
byte[]打印到控制臺(tái)看
org.bouncycastle.pqc.math.linearalgebra.ByteUtils.toBinaryString(sInput)
// 這個(gè)方法的源碼
? ? 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;
? ? }到此這篇關(guān)于Java中byte[] 和 String互相轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)java byte[] 和 String互相轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android應(yīng)用開發(fā)之將SQLite和APK一起打包的方法
這篇文章主要介紹了Android應(yīng)用開發(fā)之將SQLite和APK一起打包的方法,文章時(shí)間較早,盡管現(xiàn)在開發(fā)環(huán)境已大都遷移至Android Studio上,但打包原理依然相同,需要的朋友可以參考下2015-08-08
Spring Cloud Gateway 記錄請(qǐng)求應(yīng)答數(shù)據(jù)日志操作
這篇文章主要介紹了Spring Cloud Gateway 記錄請(qǐng)求應(yīng)答數(shù)據(jù)日志操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
短網(wǎng)址的原理與生成方法(Java實(shí)現(xiàn))
這篇文章主要給大家介紹了關(guān)于短網(wǎng)址的原理與生成方法,利用的是Java實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Java利用反射實(shí)現(xiàn)框架類的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Java利用反射實(shí)現(xiàn)框架類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
java根據(jù)網(wǎng)絡(luò)地址保存圖片的方法
這篇文章主要為大家詳細(xì)介紹了java根據(jù)網(wǎng)絡(luò)地址保存圖片的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Mybatis-Plus實(shí)現(xiàn)公共字段自動(dòng)填充的項(xiàng)目實(shí)踐
本文主要介紹了Mybatis-Plus實(shí)現(xiàn)公共字段自動(dòng)填充的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
java微信掃碼支付模式一線下支付功能實(shí)現(xiàn)
本篇文章主要介紹了JAVA微信掃碼支付模式一線下支付功能實(shí)現(xiàn),具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
Java ==,equals()與hashcode()的使用
本文主要介紹了Java ==,equals()與hashcode()的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù)
這篇文章主要介紹了java如何使用正則表達(dá)式限制特殊字符的個(gè)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

