python bytes转换为string_Python3 中 bytes 和 string 之间的互相转换
Table of Contents
Python3 最重要的新特性大概要算是對文本(text)和二進制數據(binary data)作了更為清晰的區(qū)分。文本總是 Unicode,由 str 類型表示。
二進制數據則由 bytes 類型表示。
那么什么是 bytes、什么是 Unicode 呢?首先計算機能存儲的唯一東西就是 bytes。所以為了在計算機中存儲東西,我們首先得將其編碼(encode),例如將其轉化為 bytes。比如:要想保存音樂,我們首先得用 MP3, WAV 等將其編碼
要想保存圖片,我們首先得用 PNG, JPEG 等將其編碼
要想保存文本,我們首先得用 ASCII, UTF-8 等將其編碼
Unicode 是字符集,不是字符編碼。Unicode 把全世界的字符都搜集并且編號了,但是沒有規(guī)定具體的編碼規(guī)則。編碼規(guī)則有 UTF-8、GBK 之類的。
Python3 不會以任意隱式的方式混用 str 和 bytes。正是這使得兩者的區(qū)分特別清晰,你不能拼接字符串和字節(jié)包,也無法在字節(jié)包里搜索字符串(反之亦然),也不能將字符串傳入參數為字節(jié)包的函數(反之亦然)。
創(chuàng)建 bytes 型數據
使用 Python3 的內置函數 bytes 函數。
class bytes([source[, encoding[, errors]]])
>>> bytes([1,2,3,4,5,6,7,8,9])
b'x01x02x03x04x05x06x07x08t'
>>> bytes("python", 'ascii') # 字符串,編碼b'python'
創(chuàng)建字符串
>>> website = 'http://www.jb51.net/'
>>> type(website)
>>> website'http://www.jb51.net/'
相互轉換
如果你仔細看給的 SO 鏈接那個有 bounties 的回答的話,就應該知道將 string 轉化成 bytes 首先需要進行編碼(encode),而 encode 是可以使用許多不同的 encodings 的
string to bytes
按 utf-8 的方式編碼,轉成 bytes
>>> website_bytes_utf8 = website.encode(encoding="utf-8")
>>> type(website_bytes_utf8)
>>> website_bytes_utf8b'http://www.jb51.net/'
按 gb2312 的方式編碼,轉成 bytes
>>> website_bytes_gb2312 = website.encode(encoding="gb2312")
>>> type(website_bytes_gb2312)
>>> website_bytes_gb2312b'http://www.jb51.net/'
bytes to string
解碼成 string,默認不填
>>> website_string = website_bytes_utf8.decode()
>>> type(website_string)
>>> website_string'http://www.jb51.net/'
解碼成 string,使用 gb2312 的方式
>>> website_string_gb2312 = website_bytes_gb2312.decode("gb2312")
>>> type(website_string_gb2312)
>>> website_string_gb2312'http://www.jb51.net/'
參考資料
Python3 中 bytes 和 string 之間的互相轉換(原來的文章是轉這個的,但是一年后的我看這篇文章覺得是真的水的不能再水,連個外鏈都沒,不知道當時為啥轉那篇文章,因此本文又重新改了下)
總結
以上是生活随笔為你收集整理的python bytes转换为string_Python3 中 bytes 和 string 之间的互相转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android opencv 银行卡识别
- 下一篇: python vbs库_Python语言