關(guān)于python基礎(chǔ)數(shù)據(jù)類型bytes進制轉(zhuǎn)換
1. bytes字節(jié)串類型介紹:
定義一個字節(jié)串:
字面量:b=b"he1lo 你好" [默認編碼格式ASCII]
類型: b=bytes("字節(jié)內(nèi)容",encoding= "utf-8") [默認編碼格式ASCII]Python 3新增了bytes 類型,用于代表字節(jié)串,是一一個類型。
由于bytes保存的就是原始的字節(jié)(二進制格式)數(shù)據(jù),因此bytes對象可用于在網(wǎng)絡(luò)上傳輸數(shù)據(jù),也可用于存儲各種二進制格式的文件,比如圖片、音樂等文件。
2. 二進制、十進制、十六進制之間的轉(zhuǎn)換:
二進制:
010101, 是電腦識別的一種格式數(shù)據(jù)
python解析器,幫助我們把我們輸入的python語言解析成二進制的數(shù)據(jù),供計算機所識別。
例如:如果我們定義的是十進制,十六進制,等語言,需要先轉(zhuǎn)成二進制后,計算機在進行執(zhí)行。進行數(shù)據(jù)傳遞的過程中如果使用二進制進行數(shù)據(jù)傳遞的話執(zhí)行速度會很快
2.1 二進制轉(zhuǎn)十進制:
把二進制數(shù)按權(quán)展開、相加即得十進制數(shù)
2.2 二進制轉(zhuǎn)十六進制:
十六進制是取四合一。 (注意:四位二進制轉(zhuǎn)成十六進制是從右到左開始轉(zhuǎn)換,不足時補零)
2.3 十進制轉(zhuǎn)二進制:
十進制數(shù)除二取余法,即十進制數(shù)除二,余數(shù)為權(quán)位上的數(shù),得到的商值繼續(xù)除以二,依次步驟繼續(xù)向下運算直到商為零為止
2.4 十進制轉(zhuǎn)十六進制:
間接法:把十進制轉(zhuǎn)成二進制,然后再由二進制轉(zhuǎn)成十六進制
2.5 十六進制轉(zhuǎn)二進制:
十六進制數(shù)通過除2取余法,得到二進制數(shù),對每一個十六進制為四個二進制,不足時在最左邊補零
2.6 十六進制轉(zhuǎn)十進制:
把十六進制數(shù)按權(quán)展開,相加即得十進制數(shù)
3. 字節(jié)串和字符串之間的區(qū)別:
bytes和str 除操作的數(shù)據(jù)單元不同之外,它們支持的所有方法都基本相同,bytes也是不可變序列。
字符串(str) 由多個字符組成,以字符為單位進行操作;
字節(jié)串(bytes) 由多個字節(jié)組成,以字節(jié)為單位進行操作。
4. 字節(jié)介紹:
計算機底層有兩個基本概念:位(bit) 和字節(jié)(Byte) ,其中 bit代表1位,要么是0,要么是1; Byte代表1字節(jié),1字節(jié)包含8位二進制。 定義一個字節(jié)串:“123” 里面有三個字節(jié), 每一個字節(jié)由8位二進制構(gòu)成。兩個十六進制組成 每4位二進制可以用一個十六進制數(shù)表示。(一個字節(jié)需要兩個十六進制的數(shù))每四位相當(dāng)于4位二進制數(shù)。
b’\xe6\x88\x91 \xe7\x88 \xb1Python\xe7\xbc \x96\xe7\xa8\x8b’,
比如: \xe6 就表示1字節(jié),其中\(zhòng)x表示十六進制,e6就是兩位的十六進制數(shù)。
5. 字節(jié)串和字符串之間的轉(zhuǎn)換:
5.1 如果字符串內(nèi)容都是 ASCII 字符,則可以通過直接在字符串之前添加b來構(gòu)建字節(jié)串值。
b=b"he1lo"
print (b)
# 輸出: b"he1lo"5.2 調(diào)用 bytes()函數(shù)(其實是bytes的構(gòu)造方法)將字符串按指定字符集轉(zhuǎn)換成字節(jié)串,
b=bytes("字節(jié)內(nèi)容v,encoding= "utf-8") [默認編碼格式ASCII]
b=bytes("he111o字節(jié)內(nèi)容",encoding="utf-8" )
print (b)
# 輸出: b' he11lo\xe5\xad\x97\xe8\x8a^ \x82\xe5 \x86\x85\xe5\xae \xb9'5.3 調(diào)用字符串本身的encode()方法將字符串按指定字符集轉(zhuǎn)換成字節(jié)串(常用) 如果不指定字符集,默認使用UTF-8 字符集。
str="nihao你好"
b=str. encode("utf-8")
print (b)
#輸出: b' nihao\xe4\xbd\xa0\xe5\xa5\xbd'|6. 將一個bytes對象轉(zhuǎn)換成字符串(decode(“編碼類型” ) ):
str="nihao你好"
b=str. encode("utf-8")
str1=b. decode("utf-8" )
print (str1)
# 輸出:nihao你好7. 編 碼:
Unicode字符集,包括漢字,為兩個字節(jié)(6位,支持6536個字符編號)。實際使用的UTF-8, UTF-16 GeBK GB2312等其實都屬于Unicode字符集。
ASCII碼:是用一個字節(jié)(8bit 0-255) 中的127個字母表示大小寫字母,數(shù)字和一些鍵盤 上有的符號。其余的例如漢字等不能被表示。
為了統(tǒng)各國的編碼,減少亂碼, 誕生了Unicode, 把所有編碼統(tǒng)-到- 套編碼中。
為了節(jié)約位置以及效率低下等問題。出現(xiàn)了把Unicde編碼轉(zhuǎn)化為“可變長編碼”的UTF- 8編碼。
UTF-8編碼(針對中文) .把-一個Cide字符根據(jù)不同的數(shù)字大小編碼成4-6個字節(jié),常用的英文祖母被編碼成了1個字節(jié),漢字是3個字節(jié),只有特別偏僻的字才會被編碼成4-6個字節(jié).
如果需要傳輸?shù)奈谋景罅康挠⑽淖址?,UTF-8就能節(jié)省空間。(ASCII碼可以看成是UTF-8的一 部分, 所以大量只支持ASCII編碼的歷史遺留軟件可以在UTF-8編碼下繼續(xù)工作)
GBK:只識別中文
8. 開發(fā)過程中遇見亂碼問題:
- 你自己創(chuàng)建的文件書寫了一些文字保存之后發(fā)現(xiàn)亂碼考慮編碼的問題編碼改為utf-8
- 數(shù)據(jù)傳遞的時候
python端開發(fā)的時候C語言項目c----python端傳遞數(shù)據(jù)接收到的數(shù)據(jù)中文亂碼了
需要判斷
C語言那邊數(shù)據(jù)是不是用utf-8編碼和你接收數(shù)據(jù)的時候是不是也是通過utf-8
到此這篇關(guān)于關(guān)于python基礎(chǔ)數(shù)據(jù)類型bytes進制轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)python bytes數(shù)據(jù)類型進制轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
conda虛擬環(huán)境下使用pyinstaller打包程序為exe文件全過程
pyinstaller是一個支持跨平臺使用的第三方庫,它可以將腳本執(zhí)行所需的模塊和庫,自動分析、收集并生成一個文件夾或者可執(zhí)行文件,這篇文章主要給大家介紹了關(guān)于conda虛擬環(huán)境下使用pyinstaller打包程序為exe文件的相關(guān)資料,需要的朋友可以參考下2023-12-12
Python應(yīng)用自動化部署工具Fabric原理及使用解析
這篇文章主要介紹了Python應(yīng)用自動化部署工具Fabric原理及使用解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
對Python中TKinter模塊中的Label組件實例詳解
今天小編就為大家分享一篇對Python中TKinter模塊中的Label組件實例詳解,具有很好的價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python導(dǎo)入引用其他文件的函數(shù)實戰(zhàn)案例(推薦!)
這篇文章主要給大家介紹了關(guān)于Python導(dǎo)入引用其他文件的函數(shù)的相關(guān)資料,文中通過代碼以及圖文介紹的非常詳細,對大家學(xué)習(xí)或者使用Python具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01







