Python 之struct模組解釋

2021-10-22 23:17:25 字數 2239 閱讀 1292

最近學習了python的網路程式設計,網路程式設計用到的作業系統知識很多,還是很有必要先把作業系統必要知識複習一遍了,雖然我系統的學過一次但是還是太久沒看了忘記了,記下來就讓我們講一下struct吧:

1:按照指定格式將python資料轉換為字串,該字串為位元組流,如網路傳輸時,不能傳輸int,此時先將int轉化為位元組流,然後再傳送;

2:按照指定格式將位元組流轉換為python指定的資料型別;

3:處理二進位制資料,如果用struct來處理檔案的話,需要用』wb』,』rb』以二進位制(位元組流)寫,讀的方式來處理檔案;

4:他還可以處理c語言中的結構體;

1:pack(fmt,v1,v2…):按照給定的格式(fmt),把資料轉換成字串(位元組流),並將該字串返回.;返回值型別: string

2:pack_into(fmt,buffer,offset,v1,v2…):按照給定的格式(fmt),將資料轉換成字串(位元組流),並將位元組流寫入以offset開始的buffer中.(buffer為可寫的緩衝區,可用array模組);返回值型別:none

3:unpack(fmt,v1,v2……):按照給定的格式(fmt)解析位元組流,並返回解析結果;;返回值型別: tuple

4:pack_from(fmt,buffer,offset):按照給定的格式(fmt)解析以offset開始的緩衝區,並返回解析結果;返回值型別:tuple

5:calcsize(fmt) :計算給定的格式(fmt)占用多少位元組的記憶體,注意對齊方式;返回值型別:size of fmt

當打包或者解包的時,需要按照特定的方式來打包或者解包.該方式就是格式化字串,它指定了資料型別,除此之外,還有用於控制位元組順序、大小和對齊方式的特殊字元.

import struct

#編碼res=struct.pack(

'i',1230)

print(res,type(res),len(res))

# client.recv(4)#

#反解obj=struct.unpack(

'i',res)

print(obj[0]

)

**結果:

但是,但是來了:

import struct

#編碼,當這個長度超出一定的範圍就會報錯

這時就說明了,編碼struct對編碼長度有限制

此時我們只需要把i型別換成l長整形就可以了,可以一定範圍內延遲編碼長度,但是她也不是無限延長的,他也有一定的範圍

res1=struct.pack(

'i',1230000000)

====》

res1=struct.pack(

'l',1230000000)

解決上面的長度問題:

import struct

import json

# 解決上面的長度問題:

header_dic=

header_json=json.dumps(header_dic)

print(type(header_json))

header_bytes=header_json.encode(

'utf-8'

)print(type(header_bytes))

print(len(header_bytes))

struct.pack(

'i',len(header_bytes))

這樣不管之後你的**長度是多少都不會出現超長的現象了,都轉換為固定長度,方便使用

搞定!!!

這部分的我只是簡單說了一下我用到的部分知識點。

一步一步提公升,穩贏!!!

python內建模組之struct

1.python提供了乙個struct模組來解決bytes和其他二進位制資料型別的轉換。struct的pack函式把任意資料型別變成bytes import struct print struct.pack i 10240099 執行結果 c program files python36 pytho...

python之struct 模組詳解

準確地講,python沒有專門處理位元組的資料型別。但由於b str 可以表示位元組,所以,位元組陣列 二進位制str。而在c語言中,我們可以很方便地用struct 結構體 union來處理位元組,以及位元組和int,float的轉換。在python中,比方說要把乙個32位無符號整數變成位元組,也就...

Python標準庫 struct模組

將位元組打包為二進位制資料。struct模組負責python bytes物件在python value及c struct之間的轉換。可以處理檔案二進位制資料 網路連線資料流或是其他源資料。它使用 format strings作為c結構布局的簡潔描述以及與python值的預期轉換。第乙個format ...