用python開發一些協議通訊相關的程式時,許多時候要用到位元組串的概念,即類似於c語言中的位元組陣列。因為協議在通訊的傳輸過程中,資料以payload的位元組流傳輸,因此python中的位元組串的開發使用需要注意。
python中用類似b』\x09\x89\x78』可以表示位元組串,實際上b」是類似字串,但是可以用hex格式表示其中的每個位元組的值,這樣很直觀。
b』\x』表示的時候,一定要注意\x只能是乙個位元組乙個位元組的表示,有個例子如下:
# 例1:手誤造成的有問題的例子
a = b'\xfe006795'
a[0] --> 254
# 0xfe
a[1] --> 48
# 字元'0'的ascii碼
a[2] --> 48
# 字元'0'的ascii碼
a[3] --> 54
# 字元'6'的ascii碼
a[4] --> 55
# 字元'7'的ascii碼
a[5] --> 57
# 字元'9'的ascii碼
a[6] --> 53
# 字元'5'的ascii碼
a[7] --> index out of range
# 例2:正常使用的例子
b = b'\xfe\x00\x67\x95'
b[0] -->
254b[1] -->
0b[2] -->
103b[3] -->
149b[4] --> index out of range
分析:
例1:b』\xfe006795』,只有加了』\x』字首的兩個字元』fe』才被認為是hex格式的位元組資料,其後的資料都沒有』\x』字首,所以被認為是ascii字元表示
例2:b』\xfe\x00\x67\x95』其實表示的是乙個位元組陣列,是一種字串,只是字串的內容並不是以ascii碼和unicode碼來顯示,而是直接顯示在記憶體中的內容。
既然是字串,那麼就可以使用其索引和切片等特性了。
Language Python的物件導向
python支援函式式程式設計,也支援物件導向程式設計。定義乙個類 class classname base class es optional documentation string static member declarations method declarations類的示例 class...
linux中 中括號 中的判斷引數
源自 http www.diybl.com course 6 system linux linuxjs 20081117 151774.html b file 若檔案存在且是乙個塊特殊檔案,則為真 c file 若檔案存在且是乙個字元特殊檔案,則為真 d file 若檔案存在且是乙個目錄,則為真 e...
從HIVE中中查詢
從hive資料庫查詢文件 by ymd 拼接sql語句 string sql select from doc file where contains name wildcard 拼接名稱查詢語句 if stringutils.isnoneempty unstructuredbean.getname ...