1、作用
對一個字符串進行base64或base16算法的編解碼。
2、代碼示例
package com.mzj.guava.io.base64;
import com.google.common.io.BaseEncoding;
import org.junit.Test;
public class BaseEncodingTest {
@Test
public void testBase64Encode(){
BaseEncoding baseEncoding = BaseEncoding.base64();
System.out.println(baseEncoding.encode("hello".getBytes()));
}
@Test
public void testBase64Decode(){
BaseEncoding baseEncoding = BaseEncoding.base64();
System.out.println(new String(baseEncoding.decode("aGVsbG8=")));
}
}
輸出:
aGVsbG8=
hello
3、base64維基百科
Base64是一種基於64個可打印字符來表示二進制數據的表示方法。由於所以每6個比特爲一個單元,對應某個可打印字符。3個字節有24個比特,對應於4個Base64單元,即3個字節可由4個可打印字符來表示。它可用來作爲電子郵件的傳輸編碼。在Base64中的可打印字符包括字母A-Z
、a-z
、數字0-9
,這樣共有62個字符,此外兩個可打印符號在不同的系統中而不同。一些如uuencode的其他編碼方法,和之後BinHex的版本使用不同的64字符集來代表6個二進制數字,但是不被稱爲Base64。
4、使用場合
Base64常用於在通常處理文本數據的場合,表示、傳輸、存儲一些二進制數據,包括MIME的電子郵件及XML的一些複雜數據。
5、其他說明
我們知道在計算機中的字節共有256個組合,對應就是ascii碼,而ascii碼的128~255之間的值是不可見字符。而在網絡上交換數據時,比如說從A地傳到B地,往往要經過多個路由設備,由於不同的設備對字符的處理方式有一些不同,這樣那些不可見字符就有可能被處理錯誤,這是不利於傳輸的。所以就先把數據先做一個Base64編碼,統統變成可見字符,這樣出錯的可能性就大降低了。
對證書來說,特別是根證書,一般都是作Base64編碼的,因爲它要在網上被許多人下載。電子郵件的附件一般也作Base64編碼的,因爲一個附件數據往往是有不可見字符的。
那麼Base64到底是怎樣編碼的呢?
簡單來說,任何一個數據無非可以看作一個比特流,如01000100010011101100111010111100011001010......那麼我們取6個比特爲一組,計算它的ascii值,得到一個字符,這個字符肯定是可見字符,好,把它對應的字符寫出來,再取6個比特,計算...,如此下去,直到最後,就完成了編碼。
6、擴展閱讀推薦
http://blog.xiayf.cn/2016/01/24/base64-encoding/