posts - 195, comments - 34, trackbacks - 0, articles - 1

          Base64編碼方法學習

          Posted on 2007-08-21 11:34 小強摩羯座 閱讀(475) 評論(0)  編輯  收藏
          Base64編碼方法

           Base64編碼的作用:由于某些系統中只能使用ASCII字符。Base64就是用來將非ASCII字符的數據轉換成ASCII字符的一種方法。它使用下面表中所使用的字符與編碼。
            Base64編碼方法要求把每三個8Bit的字節轉換為四個6Bit的字節,其中,轉換之后的這四個字節中每6個有效bit為是有效數據,空余的那兩個bit用0補上成為一個字節。因此Base64所造成數據冗余還是比較嚴重的,采用這中編碼方法會使得編碼后的數據長度變成編碼前長度的三分之四倍。但是,Base64是當今比較流行的編碼方法,因為它編起來“速度快而且簡單”,這是網上的說法,我更覺得它是歷史遺留下來的原因。
            舉個例子,有三個字節的原始數據:aaaaaabb bbbbccccc ccdddddd(這里每個字母表示一個bit位)
            那么編碼之后會變成:      00aaaaaa 00bbbbbb 00cccccc 00dddddd
            上面的例子只是說明了Base64的移位方式,因為我語言表達能力較差,唯恐造成誤解,故舉此例。
          這還沒完,讀者現在只是了解了Base64編碼方法的一部分,還有一個Base64編碼表需要了解,編碼表是這樣的:
          編號 字符 編號 字符 編號 字符 編號 字符 編號 字符l
          0 A 16 Q 32 g 48 w (pad) =
          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 /
            現在先別管上面這個表,在知道了移位方式之后,請再看個例子。
            有三個字節的原始數據:10101101 10111010 01110110
          編碼之后的數據是:        00101011 00011011 00101001 00110110 (還是數字看起來比較整齊~)
          編碼之后的這四個字節都轉換成為十進制數是:
                     43                   27                 42                   54
            現在用這四個數去上面那個編碼表里找,找到的字符是r b q 2,于是乎,三個字節的原始數據:10101101 10111010 01110110經Base64編碼方法編碼之后的結果是rbq2。
            還有很重要的一點要說明,如果原文的字節數量如果不是3的倍數,不夠的地方可以用全0來補足來湊成6位一組的字節。如前面所述,Base64編碼方法要求把每三個8Bit的字節轉換為四個6Bit的字節,所以當轉換后的字節數不4的倍數時,就要使用“=”來補足,因為編碼前的一個字節只少可以對應編碼后的二個字節,一個正確Base64編碼最多只會有兩個“=”。所以對于Base64解碼,就是把上面的過程逆著來一遍即可。
           



          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 禹城市| 吴桥县| 文成县| 辉南县| 山东| 朝阳区| 高密市| 武汉市| 天长市| 徐闻县| 渝中区| 秀山| 景宁| 得荣县| 鄢陵县| 靖州| 洛宁县| 且末县| 凌云县| 高碑店市| 米泉市| 蛟河市| 巫山县| 泰兴市| 宜章县| SHOW| 静乐县| 横峰县| 鄂州市| 阳山县| 石泉县| 遵义县| 商南县| 大新县| 德保县| 绍兴县| 山东省| 宝坻区| 陇西县| 射洪县| 和龙市|