Python Byte型別(API系列)

2022-07-29 09:36:11 字數 1043 閱讀 7756

原文: 《python3新增的byte型別》 博主: 傑瓊王子

總結:abcle

在python2中位元組型別同字元型別區分不大,但是在python3中最重要的特性是對文字和二進位制資料做了更加清晰的區分,文字總是unicode,由字元型別表示,而二進位制資料則由byte型別表示,python3不會以任意隱式方式混用位元組型和字元型,也因此在python3中不能拼接字串和位元組包(python2中可以,會自動進行轉換),也不能在位元組包中搜尋字串,也不能將字串傳入引數為位元組包的函式。

需要注意的是,在網路資料傳輸過程中,python2可以通過字串(string)方式傳輸,但是python3只能通過二進位制(bytes)方式來傳輸,因此要對傳輸文字進行轉換

例如下面的例子:

>>>'你好'.encode('utf-8')

b'\xe4\xbd\xa0\xe5\xa5\xbd'

>>> b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf-8')

'你好'

>>>'你好'.encode('utf-8').decode('utf-8')

'你好'

其中1.encode()和decode()方法中預設了編碼為utf-8,但是為了避免錯誤,最好將編碼加上。

2.encode()出來的結果的「b」代表二進位制(binary)

string是文字(text)的抽象表示。字串(string)由字元組成,字元也是抽象的實體且與任何二進位制表示無關。

當操縱字串的時候,很多細節是不用了解的。我們可以分割、切片和拼接字串,在字串內部進行搜尋。但並不在乎內部是如何表示的,也不用在意底層乙個字元要花費多少byte。

只有在需要將string編碼(encode)成byte的時候,比如:通過網路傳輸資料;或者需要將byte解碼(decode)成string的時候,我們才會關注string和byte的區別。

python byte型別與int str型別轉換

python中的bytes型別可以模擬為c中的uint8型陣列,本質就是順序排列的8bit二進位制數字,例如以二進位制方式從檔案中讀取時返回的就是bytes型別,或以b字首的字串也是bytes型別,如 a b abcd print type a 返回 bytes型別非常容易和ascii碼以及str型...

系統Api中型別與C 型別對應表

2011 01 12 wtypes.h 中的非託管型別 非託管 c 語言型別 託管類名 說明 handle void system.intptr 在 32 位 windows 作業系統上為 32 位,在 64 位 windows 作業系統上為 64 位。byte unsigned char syst...

如何用API從風管型別獲取風管型別的截面形狀

現在revit沒有開放直接可用的api從ducttype來獲取管道型別的形狀。本文給出了乙個替代解決辦法來獲取。思路是這樣的 從風管型別獲取與風管型別關聯的彎頭族型別,然後開啟這個彎頭族,在從開啟的族文件中獲取連線件ductconnector的截面形狀。這個事可以工作的。但是效率不是很高,因為需要開...