關於Python struct位元組流,組包拆包實作模組詳細說明
看到struct這麼英文單字,大家應該不陌生,因為c/c++中就有struct,在那裡struct叫做結構體。在Python中也使用struct,這充分說明了這個struct應該和c/c++中的struct有很深的淵源。 Python正是使用struct模組執行Python值和C結構體之間的轉換,從而形成Python位元組物件。它使用格式字串作為底層C結構體的緊湊描述,進而根據這個格式字串轉換成Python值。
我們知道python只定義了6種資料型別,字串,整數,浮點數,列表,元組,字典。但是C語言中有些位元組型的變數,在python中該如何實作呢?這一點頗為重要,特別是要在網路上進行資料傳輸的話。
python提供了一個struct模組來提供轉換。下面就介紹這個模組中的幾個方法。
pack(fmt, v1, v2, ...) ------ 依照所給的fmt所描述的格式將值v1,v2,...轉換為一個字串。
unpack(fmt, bytes) ------ 根據所給的fmt所描述的格式將bytes反向解析出來,並傳回一個元組。
calcsize(fmt) ------ 依照所給予的fmt所描述的格式傳回該結構的大小。
struct.pack():
struct.pack用來將Python的值根據格式符,轉換為字串(因為Python中沒有位元組(Byte)類型,可以把這裡的字串理解為位元組流,或位元組數組)。其函數原型為:struct.pack(fmt, v1, v2, ...),參數fmt是格式字串,關於格式字串的相關資訊下面有所介紹。 v1, v2, ...表示要轉換的python值。下面的範例將兩個整數轉換為字串(位元組流):
>>> import struct
>>> a=20
>>> b=400
>>> str=struct.pack('ii',a,b) #轉換成位元組流,雖然還是字串,但是可在網路上傳送
>>> print len(str) #ii 表示兩個int
8 節,剛好是兩個int型資料的長度
>>> print str
# 與gt; str)
'\x14\x00\x00\x00\x90\x01\x00\x00' #其中十六進位的0x00000014, 0x00001009分別表示20和400
##> ;> 由此我們就可以任意的進行組包了,比如下面一個打包的例子,只介紹其中的pack format = "!HH %ds" % len(data)buffer = struct.pack(format,opcode,blocknumber,data) 我們要對一個資料進行打包,加上一些個包頭,我們根據下面的格式符號訊息,知道H是unsigned short是2個位元組,而s是char型。所以這個buffer就是2個位元組的opcode,2個位元組的blocknumber,和len長的char。 Python模組-struct(位元組流,組包拆包實作) struct.unpack(): 我們接著上面的範例運行:>>> a1,a2=struct.unpack('ii',str)>>> print 'a1',a1a1 20>>> print 'a2=',a2a2= 400可以看到「ii」以四個位元組為分界,把8個位元組的str分成了兩個int型的整數。 struct.calcsize():用來計算特定格式的輸出的大小,是幾個位元組,例如:>>> struct.calcsize('HH4s') 8>>> struct.calcsize('ii')8>>>>>> format='!HH%ds' % len('hello python')>>> struct.calcsize(format)#16>>> #
以上是關於Python struct位元組流,組包拆包實作模組詳細說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。
