1. 程式人生 > >關於base64編碼的一些理解

關於base64編碼的一些理解

就最根本的作用來說,把base64編碼解碼看做一個黑盒,那只有對byte[]型別的資料而言,是無失真的,也就是byte[]編碼後得到的,解碼後就是原來的byte[]。而本質上其他型別的資料string 還是file等,也都是轉byte[]才進行編碼。問題在於解碼的時候,由於編碼後的內容是碼錶中的下列字元,解碼時應該無論哪種編碼格式都是能轉換原來的編碼入參byte[],是不失真的(因為下列字元byte[] string互轉看上去是不受編碼格式影響的,其他字元則會可能失真),而得到這個原始bye[]後怎麼轉回原來的String 或file,這個時候就得注意了,舉個例子,如果byte[] bytes = "測試".getbyte("utf-8");  byte[] encode = base64.encode(bytes); byte[] decode = base64.decode(encode); 這個時候一般bytes是等於decode,而怎麼讓decode轉為"測試"呢,則必須decode 以utf-8的格式來轉。其他情況類似。備忘於此。

Base64編碼表

碼值 字元 碼值 字元 碼值 字元 碼值 字元
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /