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解碼,就是把上面的過程逆著來一遍即可。
           



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


          網站導航:
           
          主站蜘蛛池模板: 枣阳市| 湘阴县| 澎湖县| 忻州市| 台湾省| 寿阳县| 玉溪市| 龙里县| 黎城县| 富裕县| 宜兴市| 信丰县| 浦城县| 平阴县| 忻州市| 彭阳县| 博白县| 乐平市| 若羌县| 岗巴县| 芦溪县| 梓潼县| 霍林郭勒市| 湘潭县| 略阳县| 东至县| 治多县| 乌拉特前旗| 泽库县| 金坛市| 吴川市| 策勒县| 屯留县| 盘山县| 庆云县| 曲阜市| 古丈县| 四会市| 湛江市| 泌阳县| 黄浦区|