pythonbytes類型
⑴ python Hex與Bytes間的轉換
在CAN、LIN、Ethernet等車載匯流排上,數據通常是以Bytes類型進行傳輸的。
所以在測試過程中從Bytes轉為Hex格式的string,以及反向的轉換就變得十分常用。
我們以一條診斷測試的Case為例:
(2)步驟4中,我們用到了Bytes到Hex(String)的轉換。這里我們用到了bytes內置方法.hex()。
⑵ 05-Python的bytes類型介紹
bytes表示位元組數組,每個單元表示單個位元組。該類型字元串的表示方法和str類型類似,不過需要在前面加上b,比如:
a=b'abc'
print(type(a))#輸出結果<class 'bytes'>
當然也可以使用雙引號或者三引號。
需要注意的是,不能使用中文字元,因為中文字元無法用單個0~255之間的值來表示。另外可以使用「\數值」來表示單個字元,如123表示S。
b'\123' #等同於b's'
它們之間是可以相互轉換的。如從str轉換成bytes,可以使用encode()成員函數。
a="abc"
b=a.encode("utf-8")
print(type(b))#輸出結果<class 'bytes'>
從bytes類型轉換成str類型可以使用成員函數decode()。
⑶ Python文件處理里encoding和encode有事區別,bytes類型是什麼意思
python問題我來回答你。
首先你要知道的是,字元串在Python內部的表示是unicode(統一碼、萬國碼)編碼,很多編程語言都是這么設計的,各個國家通用編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字元串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。
decode的作用是將其他編碼的字元串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字元串str1轉換成unicode編碼。
encode的作用是將unicode編碼轉換成其他編碼的字元串,如str2.encode('gb2312'),表示將unicode編碼的字元串str2轉換成gb2312編碼。
因此,轉碼的時候一定要先搞明白,字元串str是什麼編碼,然後decode成unicode,然後再encode成其他編碼。
bytes類型是 Python 3.x版本新增的數據類型,在 Python 2.x 中是不存在的。字元串是以字元為單位進行處理的,bytes類型是以位元組為單位處理的。
bytes 只負責以位元組序列的形式(二進制形式)來存儲數據,至於這些數據到底表示什麼內容(字元串、數字、圖片、音頻等),完全由程序的解析方式決定。
說白了,bytes 只是簡單地記錄內存中的原始數據,至於如何使用這些數據,bytes 並不在意,你想怎麼使用就怎麼使用,bytes 並不約束你的行為。
bytes 類型的數據非常適合在互聯網上傳輸,可以用於網路通信編程;bytes 也可以用來存儲圖片、音頻、視頻等二進制格式的文件。
舉個例子:
b = b'' # 創建一個空的bytes
b = byte() # 創建一個空的bytes
b = b'hello' # 直接指定這個hello是bytes類型
b = bytes('string',encoding='編碼類型') #利用內置bytes方法,將字元串轉換為指定編碼的bytes
b = str.encode('編碼類型') # 利用字元串的encode方法編碼成bytes,默認為utf-8類型
bytes.decode('編碼類型'):將bytes對象解碼成字元串,默認使用utf-8進行解碼。
⑷ 了解python中bytes,str和unicode的區別
str是經過編好碼的字元串,如unicode,gb2312,ascii編碼,可以表示不同語言中的字元,可以解碼成byte byte是位元組,只能是ascii碼0-255的字元,表示未經編碼處理的原始字元串
⑸ 區分 bytes str 和 unicode
Python3 有兩種表示字元序列的類型: bytes 和 str 。其中 bytes 是一種包含原始8位值的序列; str 是一種包含 Unicode 字元的序列。
Python2 也有兩種表示字元序列的類型: str 和 unicode 。其中 str 是一種包含原始8位值的序列; unicode 是一種包含 Unicode 字元的序列。
把 Unicode 字元轉換成二進制數據(原始8位值)有多種辦法,最常見的編碼方式就是 UTF-8。Python3 的 str 實例或者 Python2 的 unicode 實例表示的 Unicode 字元要想轉換成二進制數據,必須使用 encode 方法;要想把二進制數據轉換成 Unicode 字元,則必須使用 decode 方法。
編碼和解碼操作我們通常會放在最外圍來做,程序的核心部分應該使用 Unicode 字元類型,即 Python3 中的 str 和 Python2 中的 unicode ,並且不要對字元編碼做任何假設。因此,在對輸入的數據進行操作之前,我們通常會在應用中定義好輔助函數,以保證字元序列的類型符合以下預期:
下面,我們針對 Python2 和 Python3 ,分別編寫 2 個輔助函數,以便在兩種情況之間轉換,確保轉換後的輸入數據符合預期的字元序列類型。
接受 str 或 bytes ,確保返回 str 的輔助函數:
運行結果:
接受 str 或 bytes ,確保返回 bytes 的輔助函數:
運行結果:
接受 str 或 unicode ,確保返回 unicode 的輔助函數:
Python2 中的 str 在程序中均以原始的 8 位值表示:
下面的寫法,使用 format 函數連接 2 個字元序列,返回新的 str 是沒問題的:
可若要返回 unicode 字元序列,則會報 UnicodeDecodeError :
這個時候我們就需要上述編寫的 to_unicode 輔助函數,把 var2 轉變為 unicode 序列:
接受 str 或 unicode ,確保返回 str 的輔助函數:
定義一個 unicode 字元序列:
使用 format 函數連接 2 個字元序列,返回 unicode 字元序列:
同理,返回 str ,則會報 UnicodeEncodeError :
我們需要藉助上述編寫的輔助函數 to_str 將 var3 轉換為位元組序列:
⑹ python3轉成bytes其中bytes()與encode()有什麼區別
就將str類型轉換為Bytes類型這一過程的實質而言,沒有區別.
硬要講區別,大概就是語法上的區別了,一個是函數,一個是方法.
需要傳遞函數的時候,你不能使用方法.
需要調用方法的時候,你不能寫成函數的形式.
⑺ python 里 telnetlib 的 tn.write(b"ls\n")
python3中bytes類型的意思
讀取文件,然後對字元串解碼就是這種b'cmd'
⑻ python內建數據類型有哪些
python內置的常用數據類型有:數字、字元串、Bytes、列表、元組、字典、集合、布爾等
Python3 支持 int、float、bool、complex(復數)。
在Python 3里,只有一種整數類型 int,表示為長整型,沒有 python2 中的 Long。
像大多數語言一樣,數值類型的賦值和計算都是很直觀的。
內置的 type() 函數可以用來查詢變數所指的對象類型。
⑼ python的bytes類型有什麼用,什麼情況下使用
當使用文本模式打開文件時,它返回一個TextIOBase的子類。
當使用二進制打開時,返回的是BufferedIOBase的子類。
准確細分為:可讀二進制模式,返回BufferReader對象;在可寫和追加模式中,返回BufferWriter對象,在讀寫模式中,返回BufferRandom。
當buffering關閉時,原始數據流,一個RawIOBase的子類將被返回。
⑽ python str與bytes編碼解碼
下面一張圖搞懂編碼、解碼、編碼表之間的關系。
不難看出,它們是一種根據編碼表進行翻譯、映射的過程:
實際上,字元串類型只有encode()方法,沒有decode()方法,而bytes類型只有decode()方法而沒有encode()方法。
二進制格式的數據也常稱為裸數據(raw data),所以str數據經過編碼後得到raw data,raw data解碼後得到的str。
上面說了,編碼是將字元數據轉換成位元組數據(raw data),解碼是將位元組數據轉換成字元數據。在Python中字元數據也就是字元串,即str類型,位元組數據也就是bytes類型或bytearray類型。
編碼時,可以使用位元組類型的構造方法bytes()、bytearray()來構造位元組,也可以使用str類型的encode()方法來轉換。
解碼時,可以使用str類型的構造方法str()來構造字元串,也可以使用bytes、bytearray()類型的decode()方法。
另外需要注意的是,編碼和解碼的過程中都需要指定編碼表(字元集),默認採用的是utf-8字元集。
例如,使用encode()的方式將str編碼為bytes數據。
使用bytes()和bytearray()將str構造成bytes或bytearray數據,這兩個方法都要求str->byte的過程中給定編碼。
實際上,bytes()、bytearray()這兩個方法構造位元組數據的時候還有點復雜,因為可以從多個數據源來構造,比如字元串、整數值、buffer。如何使用這兩個方法構造位元組數據,詳細內容參考help(bytes)和help(bytearray)給出的說明,這里給幾個簡單示例。
構造bytes的方式:
構造bytearray的方式:
解碼是位元組序列到str類型的轉換。
例如,使用decode()方法進行解碼"我"字,它的utf-8的編碼對應為"\xe6\x88\x91":
使用str()進行轉換。
當編碼、解碼的過程使用了不同的(不兼容的)編碼表時,就會出現亂碼。所以,解決亂碼的唯一方式是指定對應的編碼表進行編碼、解碼。
例如,使用utf-8編碼"我"字,得到一個bytes序列,然後使用gbk解碼這個bytes序列。
這里報錯了,因為utf-8的位元組序列里有gbk無法解碼的位元組。如果使用文本編輯器一樣的工具去顯化這個過程,得到的將是亂碼字元。
原文地址: https://www.cnblogs.com/f-ck-need-u/p/10185965.html