C語言中的結(jié)構(gòu)體在Python中實現(xiàn)轉(zhuǎn)換_第1頁
C語言中的結(jié)構(gòu)體在Python中實現(xiàn)轉(zhuǎn)換_第2頁
C語言中的結(jié)構(gòu)體在Python中實現(xiàn)轉(zhuǎn)換_第3頁
C語言中的結(jié)構(gòu)體在Python中實現(xiàn)轉(zhuǎn)換_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第C語言中的結(jié)構(gòu)體在Python中實現(xiàn)轉(zhuǎn)換目錄struct介紹struct中的常用接口pack()unpack()fmt示例

struct介紹

Python中提供了struct接口,用來處理類似C語言中的結(jié)構(gòu)體。

處理的方式是將結(jié)構(gòu)體表現(xiàn)位字符串,這個字符串其實就是結(jié)構(gòu)體的一個個字節(jié)。

struct中的常用接口

主要就是兩個,pack()和unpack()。

pack()就是將結(jié)構(gòu)體轉(zhuǎn)換成字符串(或者說字節(jié)序),unpack()則相反。

pack()

pack()函數(shù)的說明如下(來自Python2.7.15documentation):

struct.pack(fmt,v1,v2,...)

Returnastringcontainingthevaluesv1,v2,...packedaccordingtothegivenformat.

Theargumentsmustmatchthevaluesrequiredbytheformatexactly.

fmt是一個特殊的字符串,用來標記結(jié)構(gòu)體的格式。

v1,v2等相當于結(jié)構(gòu)體中的成員變量。

返回的是一個字符串。

unpack()

unpack()函數(shù)的說明如下(來自Python2.7.15documentation):

struct.unpack(fmt,string)

Unpackthestring(presumablypackedbypack(fmt,...))accordingtothegivenformat.

Theresultisatupleevenifitcontainsexactlyoneitem.

Thestringmustcontainexactlytheamountofdatarequiredbytheformat(len(string)mustequalcalcsize(fmt)).

fmt同pack()。

string就是pack()轉(zhuǎn)換過來的字符串(或者說字節(jié)序)。

返回的是一個元組,里面就是一個個的結(jié)構(gòu)體成員變量。

fmt

fmt是struct接口中最重要的部分。

它可以分為兩個部分。

第一部分是字節(jié)序順尋和對其等信息,由如下的字符表示:

這個部分是非必需的,如果沒有使用上述的任何一個字符,則默認效果同@。

第二部分的字符表示成員的結(jié)構(gòu)體類型(這決定了各個成員需要用多少個字符串表示),由如下的字符表示:

示例

下面是一個示例(使用Python2.7測試OK):

importstruct

if__name__=="__main__":

result=struct.pack('hhl',1,2,3)#resultisbytestring.

foriinresult:

print'0x%02x'%ord(i)#0100020003000000

result1=struct.unpack('hhl',result)#bytestringistransferedtotuple.

printtype(result1)#thetypeistuple.

printresult1#(1,2,3)

首先是pack(),這里的參數(shù)hhl表示的是有三個成員,它們的類型分別是short,short和long;它們的值分別是1,2,3.

執(zhí)行pack()之后返回的字節(jié)序列如代碼右側(cè)的注釋。

由于這里使用的是默認大小端和對齊(本機是小端),所以1對應(yīng)到short的字節(jié)是0x01,0x01,2是0x02,0x02;3對應(yīng)到long的字節(jié)是0x03,0x00,0x00,0x00。

之后的unpack()函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論