1、編碼編碼
一、base64 編碼url
base64編碼是將文本從新編碼,轉化成指定 64個可見ASCII字符的形式,這64個字符包括 A~Z, a~z, 0~9, + 和 / spa
其原理是將原文本按每3個字節取出來,每 6bit 依次拆開,首部補上2bit的0值,這樣本來3字節的數據就變成了新的4字節。索引
從原理可知,base64編碼以後,最終文本會比原文本增長33.3%。it
須要注意的是,若是原文本取到最後,不足3字節,則不足6bit部分,除首部補上2bit的0值以外,尾部也補上0值,湊足8bit。base64
那新拼成的4字節是按標準的ASCII碼顯示嗎?不是,是按一份約定好的索引表,該表以下:table
數值 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
字符 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | a | b | c | d | e | f |
數值 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
字符 | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | + | / |
須要注意的是,若是不足3字節,缺乏幾個字節就在最終編碼後面補上幾個=號,即最多能夠補兩個=號。原理
好比對 go 進行 base64 ,首先就能猜到最終編碼末尾會補上一個 = 號,而後咱們看一下原文的ASCII碼, g 是 103 即 01100111, o 是 111 即 01101111,放到一塊兒是 0110011101101111,按每 6bit 分割爲 011001 | 110110 | 1111 ,補好首部和尾部是 00011001 | 00110110 | 00111100 ,轉成十進制爲 25 | 54 | 60 ,查表得出 Z | 2 | 8,即 Z28,再補上一個=號,最終結果是 Z28=二進制
base64能夠將不可見字符轉成可見字符傳輸,在 STMP 協議和其它文本協議中比較經常使用。此外在HTTP協議中,有時也會進行base64或url編碼,來轉換掉一些特殊字符。數據
二、url編碼
三、16進制編碼(二進制編碼、64進制編碼[base64])
四、ASCII碼