<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前言;
Python bytes
型別用來表示一個位元組串。“位元組串“不是程式設計術語,是我自己“捏造”的一個詞,用來和字串相呼應。
bytes 是 Python 3.x 新增的型別,在 Python 2.x
中是不存在的。
位元組串(bytes)和字串(string)的對比:
bytes
只負責以位元組序列的形式(二進位制形式)來儲存資料,至於這些資料到底表示什麼內容(字串、數位、圖片、音訊等),完全由程式的解析方式決定。如果採用合適的字元編碼方式(字元集),位元組串可以恢復成字串;反之亦然,字串也可以轉換成位元組串。
說白了,bytes 只是簡單地記錄記憶體中的原始資料,至於如何使用這些資料,bytes 並不在意,你想怎麼使用就怎麼使用,bytes 並不約束你的行為。
bytes 型別的資料非常適合在網際網路上傳輸,可以用於網路通訊程式設計;bytes
也可以用來儲存圖片、音訊、視訊等二進位制格式的檔案。
字串和 bytes 存在著千絲萬縷的聯絡,我們可以通過字串來建立 bytes
物件,或者說將字串轉換成 bytes 物件。
有以下三種方法可以達到這個目的:
bytes
。encode()
方法,該方法專門用來將字串按照指定的字元集轉換成對應的位元組串;如果不指定字元集,那麼預設採用 UTF-8。例1:通過b'string
'定義bytes型別,但不支援中文(出現中文則報錯)
例2:可以通過string.encoding('utf-8')
將字串轉換成bytes型別(相容中文),還原通過bytes.decode('utf-8')
# coding:utf-8 if __name__ == '__main__': # 例1 b = b'abc123' print(b) # b'abc123' print(type(b)) # <class 'bytes'> # c = b'我abc123' Error # 例2 c = '我abc123' c = c.encode('utf-8') print(c) # b'xe6x88x91abc123' print(type(c)) # <class 'bytes'> print(c.decode('utf-8')) # 我abc123
例1:string有的方法bytes大部分都有(但其字串引數必須是bytes型別)
# coding:utf-8 if __name__ == '__main__': b = b'abc123' print(b.find(b'a')) # 0 c = 'abc123' print(c.find('a')) # 0 # b.find('a') Error 引數必須是bytes print(b.replace(b'a', b'f')) # b'fbc123' print(c.replace('a', 'f')) # fbc123 # b.replace('a', 'f') Error 引數必須是bytes
#通過建構函式建立空 bytes b1 = bytes() #通過空字串建立空 bytes b2 = b'' #通過b字首將字串轉換成 bytes b3 = b'http://c.biancheng.net/python/' print("b3: ", b3) print(b3[3]) print(b3[7:22]) #為 bytes() 方法指定字元集 b4 = bytes('C語言中文網8歲了', encoding='UTF-8') print("b4: ", b4) #通過 encode() 方法將字串轉換成 bytes b5 = "C語言中文網8歲了".encode('UTF-8') print("b5: ", b5)
執行結果:
b3: b'http://c.biancheng.net/python/'
112
b'c.biancheng.net'
b4: b'Cxe8xafxadxe8xa8x80xe4xb8xadxe6x96x87xe7xbdx918xe5xb2x81xe4xbax86'
b5: b'Cxe8xafxadxe8xa8x80xe4xb8xadxe6x96x87xe7xbdx918xe5xb2x81xe4xbax86'
從執行結果可以發現,對於非 ASCII 字元,print 輸出的是它的字元編碼值(十六進位制形式),而不是字元本身。非 ASCII 字元一般佔用兩個位元組以上的記憶體,而 bytes 是按照單個位元組來處理資料的,所以不能一次處理多個位元組。
到此這篇關於Python中的bytes型別及其用法的文章就介紹到這了,更多相關Python中的bytes型別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45