python中bytes和str類型的區(qū)別
經(jīng)過一上午的查找資料。大概理清楚了bytes類型和str類型的區(qū)別。
bytes類型和str類型在呈現(xiàn)形式有相同之處,如果你print一個bytes類型的變量,會打印一個用b開頭,用單引號括起來的序列。比如:
>>> c = b'\x80abc' >>> type(c) bytes
我們看到c = b'\x80abc'表示的就是一個bytes類型。是不是和字符串很像?只是前面多出來一個b。那b'\x80abc的含義是什么呢?\x80即16進(jìn)制的兩位數(shù),代表十進(jìn)制的0-255,同時也代表一個字節(jié),8個bit。abc,即英文字母abc,為什么這里不是\x...的形式呢。因為在utf-8里,一個ASCII碼 的儲存形式完全不變,一個a也就用一個字節(jié)來儲存。
那么b'\x80abc'的儲存情況就完全明白了,一共四個字節(jié),每個字節(jié)值的情況一目了然。下面再做一個實驗。
>>> A = b'\xe5\x9d\x8fHello'.decode("utf-8","strict")
>>> A
'壞Hello'
>>> type(A)
str
首先要知道utf-8是可變長編碼。中文字符占3個字節(jié),‘壞'字的utf-8碼為\xe5\x9d\x8f 。那么給定一個bytes序列 b'\xe5\x9d\x8fHello', 用utf-8解碼,顯然能得到壞Hello。并且我們看到,解碼之后,A已經(jīng)變成了str類型,和預(yù)想一模一樣。
假如python無法將一個二進(jìn)制解碼成utf-8碼,則會報錯。比如解碼b'\x80abc'則會報錯:
'utf-8' codec can't decode byte 0x80 in position 0:invalid start byte
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
對Python中實現(xiàn)兩個數(shù)的值交換的集中方法詳解
今天小編就為大家分享一篇對Python中實現(xiàn)兩個數(shù)的值交換的集中方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
python實現(xiàn)將多個txt文件的內(nèi)容合并為一個
這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫一個腳本,可以將指定目錄中的多個.txt文件的內(nèi)容合并到一個文件中,有需要的小伙伴可以參考下2024-12-12
python數(shù)據(jù)可視化JupyterLab實用擴(kuò)展程序Mito
這篇文章主要為大家介紹了python數(shù)據(jù)可視化JupyterLab實用擴(kuò)展程序Mito的功能應(yīng)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
使用Python對接OpenAi?API實現(xiàn)智能QQ機(jī)器人的方法
這篇文章主要介紹了使用Python對接OpenAi?API實現(xiàn)智能QQ機(jī)器人的方法,主要是提供一個方法思路,可以根據(jù)實現(xiàn)代碼延申出更多的解決方法,需要的朋友可以參考下2023-03-03
python 子類調(diào)用父類的構(gòu)造函數(shù)實例
這篇文章主要介紹了python 子類調(diào)用父類的構(gòu)造函數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
解決pyPdf和pyPdf2在合并pdf時出現(xiàn)異常的問題
這篇文章主要介紹了解決pyPdf和pyPdf2在合并pdf時出現(xiàn)異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04

