日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

base64编码_几分钟看懂Base64编码原理

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 base64编码_几分钟看懂Base64编码原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Base64簡介

Base64是基于64個可打印字符(小寫字母a-z,大寫字母A-Z,數字0-9,符號"+","/" 再加上作為墊字的"=",實際有65個字符,其他的所有字符都要轉換成這個字符集中的字符),用來表示任意二進制數據的方法。

Base64使用緣故

在二進制數據的傳輸中,常常包含很多無法顯示和打印的字符,想要他們正常顯示出來,就需要一個二進制到字符串的轉換方法。Base64就是一種最常見的二進制編碼方法。

常見應用就是Base64用于在HTTP協議下傳輸數據。由于HTTP協議是超文本傳輸協議,所以需要將在HTTP協議下傳輸的二進制數據轉換成字符數據,而且網絡傳輸只能傳輸可打印字符,而在實際網絡傳輸中,傳輸的數據并不都是可打印字符,比如中文、二進制文件,圖片等。為了成功傳輸這些類型的數據,此時Base64就派上大用場了。

什么是可打印字符:在ASCII碼中規定,十進制數字0-31屬于非打印控制字符,32-127屬于可打印字符(32-126在鍵盤上能找到對應的字符,32代表鍵盤中的空格,127代表鍵盤中的DELETE命令)

Base64編碼原理

  • 按照從左往右的規則,每三個字節作為一組,一共就是24個二進制位。

  • 將這24個二進制位分為四組,每組6個二進制位。

  • 之后在每組數據前面添加00,組成每個組8個二進制位,此時變成了32個二進制位,即四個字節

  • 然后根據下表,得到擴展后的每個字節的對應符號,base64編碼方法完成

  • 具體Base64編碼演示

  • "G"、"o"、"d" 三個字符的ASCII值分別是71、111、100,二進制值是01000111、01101111、01100100 ,然后就組成了24位的二進制值010001110110111101100100

  • 將這24個二進制位分成四組,分別得到010001、110110、111101、100100

  • 在每組前面添加00,得到00010001、00110110、00111101、00100100

  • 根據上表,得到每個值對應Base64編碼,分別是:R、2、9、k

  • 所以,得到字符串"God"的Base64編碼為R29k , 如果一組沒有三個字節,則是這樣處理的

    兩個字節的情況:

    將這兩個字節一共16個二進制位,按照上面的規則分成三組,最后一組除了前面加上00之外,后面也要加上00,這樣就得到一個三位的Base64編碼,再在末尾補上一個"="號。

    比如,"Go" 這個字符串是兩個字節,可以轉化成三組00010001,00110110,00111100,對應Base64編碼分別為:h、3、8,再加上一個"="號,因此"Go"的Base64編碼就是h38=

    一個字節的情況:

    將這一個字節一共8個二進制位,按照上面的規則分成兩組,最后一組除了前面加上00之外,后面也要加上0000,這樣就得到一個兩位的Base64編碼,再在末尾補兩個"="號。

    比如,"G" 這個字符串是一個字節,可以轉化成兩組 00010001,00110000,對應Base64編碼分別為:R、w,再加上兩個"="號,因此"G"的Base64編碼就是Rw==

    Java代碼實現Base64編碼與解碼

    public?static?void?main(String[]?args)?throws?UnsupportedEncodingException?{????
    ????//編碼????
    ????String?encode?=?Base64.getEncoder().encodeToString("God".getBytes());????????
    ????System.out.println(encode);???
    ????//解碼????
    ????System.out.println(new?String(Base64.getDecoder().decode(encode)));
    }

    打印結果:

    R29k
    God

    往期精彩文章:

    做好第三方對接,早日漲工資!

    分享我的網站部署過程!

    總結

    以上是生活随笔為你收集整理的base64编码_几分钟看懂Base64编码原理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。