亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python中base64編碼簡介

 更新時間:2022年12月02日 14:38:47   作者:orangerfun  
Base64是一種任意二進制到文本字符串的編碼方法,常用于在URL、Cookie、網(wǎng)頁中傳輸少量二進制數(shù)據(jù),Base64是一種用64個字符來表示任意二進制數(shù)據(jù)的方法,這篇文章主要介紹了python中base64編碼,需要的朋友可以參考下

1. base64編碼簡介

用記事本打開exe、jpg、pdf這些文件時,我們都會看到一大堆亂碼,因為二進制文件包含很多無法顯示和打印的字符,所以,如果要讓記事本這樣的文本處理軟件能處理二進制數(shù)據(jù),就需要一個二進制到字符串的轉(zhuǎn)換方法。Base64是一種最常見的二進制編碼方法。

Base64是一種任意二進制到文本字符串的編碼方法,常用于在URL、Cookie、網(wǎng)頁中傳輸少量二進制數(shù)據(jù)。Base64是一種用64個字符來表示任意二進制數(shù)據(jù)的方法,原理很簡單,首先,準備一個包含64個字符的數(shù)組['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/'] ,然后,對二進制數(shù)據(jù)進行處理,每3個字節(jié)一組,一共是3x8=24bit,劃為4組,每組正好6個bit,這樣我們得到4個數(shù)字作為索引,然后查表,獲得相應的4個字符,就是編碼后的字符串。

每組6位->6位二進制取值范圍為:000000-111111(0-63)正好可以取到64個字符

所以,Base64編碼會把3字節(jié)的二進制數(shù)據(jù)編碼為4字節(jié)的文本數(shù)據(jù),長度增加33%,好處是編碼后的文本數(shù)據(jù)可以在郵件正文、網(wǎng)頁等直接顯示。如果要編碼的二進制數(shù)據(jù)不是3的倍數(shù),最后會剩下1個或2個字節(jié)怎么辦?Base64用\x00字節(jié)在末尾補足后,再在編碼的末尾加上1個或2個=號,表示補了多少字節(jié),解碼的時候,會自動去掉。

2. python中使用base64

python中直接使用內(nèi)置包base64即可,base64.b64encode base64.b64decode 分別是編碼和解碼

import base64
if __name__ == "__main__":
    bytes_str = b"i love beijing"
    # 編碼
    # b'aSBsb3ZlIGJlaWppbmc='
    base64_string = base64.b64encode(bytes_str)
    print(base64_string)
    # 解碼
    # b'i love beijing'
    source_str = base64.b64decode(base64_string)
    print(source_str)

由于標準的Base64編碼后可能出現(xiàn)字符+/,在URL中就不能直接作為參數(shù),所以又有一種url safe 的base64編碼,其實就是把字符+/分別變成-_

bytes_str = b"i love tiananmen"
# 編碼
base64_string = base64.urlsafe_b64encode(bytes_str)
print(base64_string)
# 解碼
source_str = base64.urlsafe_b64decode(base64_string)
print(source_str)

注意:無論是哪種編碼方式,輸入到base64中的參數(shù)都是字節(jié)的形式,因此上方中參數(shù)byte_str前有個b

3. 應用

將圖片(視頻)編碼成字符串
如下代碼,將一張圖片編碼成字符串,后面我們可以將圖片直接以字符串的形式保存到文件中,方便讀取,因為有些情況下存取字符串會比直接保存圖片方便,比如先把圖片存放到數(shù)據(jù)庫中

if __name__ == "__main__":
    import requests
    from PIL import Image
    from io import BytesIO
    import base64

    response = requests.get('https://ts1.cn.mm.bing.net/th/id/R-C.fd4056c8c00979ab8561f8db8219c2ae?rik=JPk67EIYaKIS3A&riu=http%3a%2f%2fimg.mm4000.com%2ffile%2fa%2fa2%2f869bd2bd6a.jpg&ehk=2z%2bPuRHJOYtkm9ICs8fPs0EJbE96jJX2E8QyrVP5kyQ%3d&risl=&pid=ImgRaw&r=0')
    if response.status_code != 200:
        raise ValueError("request Error!")
    # 將請求結果存入io中, 使用PIL以io的方式打開圖片
    img = BytesIO(response.content)
    pict = Image.open(img)
    # 改變圖像大小,也可是其他操作
    pict = pict.resize((100, 100), Image.ANTIALIAS)
    # 將圖片存入io中, PIL格式的圖片變成byte格式
    img_buff = BytesIO()
    pict.save(img_buff, "jpeg")
    # 使用base64把byte對象編碼成字符串
    img_str = base64.urlsafe_b64encode(img_buff.getvalue())
    print("image string:", img_str.decode("utf-8"))
    img.close()

    # 將字符串解碼成圖片
    bytes_image = base64.urlsafe_b64decode(img_str)
    image_buff = BytesIO(bytes_image)
    image = Image.open(image_buff)
    image.show()

結果如下:

到此這篇關于python中base64編碼的文章就介紹到這了,更多相關python base64編碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python中的函數(shù)式編程:不可變的數(shù)據(jù)結構

    Python中的函數(shù)式編程:不可變的數(shù)據(jù)結構

    今天小編就為大家分享一篇關于Python中的函數(shù)式編程:不可變的數(shù)據(jù)結構,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • python輕松實現(xiàn)代碼編碼格式轉(zhuǎn)換

    python輕松實現(xiàn)代碼編碼格式轉(zhuǎn)換

    由于某些原因,需要將代碼從A機房遷移到B機房,這兩個之間不能互相訪問,但是歷史原因?qū)е翧機房的代碼全是utf8編碼的,B機房要求是GBK編碼,看看這個怎么解決。雖然很簡單,但是還是要推薦給大家,需要的小伙伴參考下吧。
    2015-03-03
  • 深入解析Python編程中super關鍵字的用法

    深入解析Python編程中super關鍵字的用法

    Python的子類調(diào)用父類成員時可以用到super關鍵字,初始化時需要注意super()和__init__()的區(qū)別,下面我們就來深入解析Python編程中super關鍵字的用法:
    2016-06-06
  • 使用python求解迷宮問題的三種實現(xiàn)方法

    使用python求解迷宮問題的三種實現(xiàn)方法

    關于迷宮問題,常見會問能不能到達某點,以及打印到達的最短路徑,下面這篇文章主要給大家介紹了關于如何使用python求解迷宮問題的三種實現(xiàn)方法,需要的朋友可以參考下
    2022-03-03
  • python在命令行中使用?pdb?實現(xiàn)斷點調(diào)試功能

    python在命令行中使用?pdb?實現(xiàn)斷點調(diào)試功能

    在命令行中設置斷點通常需要使用調(diào)試工具來實現(xiàn),下面以 Python 為例介紹如何在命令行中使用pdb實現(xiàn)斷點調(diào)試,這篇文章主要介紹了python在命令行中使用pdb實現(xiàn)斷點調(diào)試,需要的朋友可以參考下
    2023-06-06
  • 對TensorFlow中的variables_to_restore函數(shù)詳解

    對TensorFlow中的variables_to_restore函數(shù)詳解

    今天小編就為大家分享一篇對TensorFlow中的variables_to_restore函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python高級搜索實現(xiàn)高效搜索GitHub資源

    python高級搜索實現(xiàn)高效搜索GitHub資源

    這篇文章主要為大家介紹了python高級搜索來高效搜索GitHub,從而高效獲取所需資源,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Python?VisPy庫高性能科學可視化圖形處理用法實例探究

    Python?VisPy庫高性能科學可視化圖形處理用法實例探究

    VisPy是一個用于高性能科學可視化的Python庫,它建立在現(xiàn)代圖形處理單元(GPU)上,旨在提供流暢、交互式的數(shù)據(jù)可視化體驗,本文將深入探討VisPy的基本概念、核心特性以及實際應用場景,并通過豐富的示例代碼演示其強大的可視化能力
    2023-12-12
  • 在pycharm中使用matplotlib.pyplot 繪圖時報錯的解決

    在pycharm中使用matplotlib.pyplot 繪圖時報錯的解決

    這篇文章主要介紹了在pycharm中使用matplotlib.pyplot 繪圖時報錯的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 利用Python實現(xiàn)數(shù)值積分的方法

    利用Python實現(xiàn)數(shù)值積分的方法

    這篇文章主要介紹了利用Python實現(xiàn)數(shù)值積分。本文主要用于對比使用Python來實現(xiàn)數(shù)學中積分的幾種計算方式,并和真值進行對比,加深大家對積分運算實現(xiàn)方式的理解
    2022-02-02

最新評論