python的struct模塊

python的struct模塊

ID:37177258

大?。?8.51 KB

頁數(shù):4頁

時(shí)間:2019-05-21

python的struct模塊_第1頁
python的struct模塊_第2頁
python的struct模塊_第3頁
python的struct模塊_第4頁
資源描述:

《python的struct模塊》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、Python模塊學(xué)習(xí)----struct數(shù)據(jù)格式轉(zhuǎn)換2009-08-0501:00Python是一門非常簡潔的語言,對(duì)于數(shù)據(jù)類型的表示,不像其他語言預(yù)定義了許多類型(如:在C#中,光整型就定義了8種),它只定義了六種基本類型:字符串,整數(shù),浮點(diǎn)數(shù),元組,列表,字典。通過這六種數(shù)據(jù)類型,我們可以完成大部分工作。但當(dāng)Python需要通過網(wǎng)絡(luò)與其他的平臺(tái)進(jìn)行交互的時(shí)候,必須考慮到將這些數(shù)據(jù)類型與其他平臺(tái)或語言之間的類型進(jìn)行互相轉(zhuǎn)換問題。打個(gè)比方:C++寫的客戶端發(fā)送一個(gè)int型(4字節(jié))變量的數(shù)據(jù)到Python寫的服務(wù)器,

2、Python接收到表示這個(gè)整數(shù)的4個(gè)字節(jié)數(shù)據(jù),怎么解析成Python認(rèn)識(shí)的整數(shù)呢?Python的標(biāo)準(zhǔn)模塊struct就用來解決這個(gè)問題。struct模塊的內(nèi)容不多,也不是太難,下面對(duì)其中最常用的方法進(jìn)行介紹:最簡單的圖解:3s代表3個(gè)字節(jié)的string。每個(gè)s是一個(gè)Byte。(漢字2個(gè))。注:'10s'meansasingle10-bytestring(pythonDoc2.6.2)struct.pack  struct.pack用于將Python的值根據(jù)格式符,轉(zhuǎn)換為字符串(因?yàn)镻ython中沒有字節(jié)(Byte)類

3、型,可以把這里的字符串理解為字節(jié)流,或字節(jié)數(shù)組)。其函數(shù)原型為:struct.pack(fmt,v1,v2,...),參數(shù)fmt是格式字符串,關(guān)于格式字符串的相關(guān)信息在下面有所介紹。v1,v2,...表示要轉(zhuǎn)換的python值。下面的例子將兩個(gè)整數(shù)轉(zhuǎn)換為字符串(字節(jié)流):1.importstruct??2.??3.a=20??4.b=400??5.??6.str=struct.pack("ii",a,b)??#轉(zhuǎn)換后的str雖然是字符串類型,但相當(dāng)于其他語言中的字節(jié)流(字節(jié)數(shù)組),可以在網(wǎng)絡(luò)上傳輸??7.print'

4、length:',len(str)??8.printstr??9.printrepr(str)??10.??11.#----result??1.#length:8??2.#????----這里是亂碼??3.#'x14x00x00x00x90x01x00x00'??importstructa=20b=400str=struct.pack("ii",a,b)#轉(zhuǎn)換后的str雖然是字符串類型,但相當(dāng)于其他語言中的字節(jié)流(字節(jié)數(shù)組),可以在網(wǎng)絡(luò)上傳輸print'length:',len(str)printst

5、rprintrepr(str)#----result#length:8#----這里是亂碼#'x14x00x00x00x90x01x00x00'格式符"i"表示轉(zhuǎn)換為int,'ii'表示有兩個(gè)int變量。進(jìn)行轉(zhuǎn)換后的結(jié)果長度為8個(gè)字節(jié)(int類型占用4個(gè)字節(jié),兩個(gè)int為8個(gè)字節(jié)),可以看到輸出的結(jié)果是亂碼,因?yàn)榻Y(jié)果是二進(jìn)制數(shù)據(jù),所以顯示為亂碼??梢允褂胮ython的內(nèi)置函數(shù)repr來獲取可識(shí)別的字符串,其中十六進(jìn)制的0x00000014,0x00000190分別表示20和400。struct.unp

6、ack  struct.unpack做的工作剛好與struct.pack相反,用于將字節(jié)流轉(zhuǎn)換成python數(shù)據(jù)類型。它的函數(shù)原型為:struct.unpack(fmt,string),該函數(shù)返回一個(gè)元組。下面是一個(gè)簡單的例子:1.str=struct.pack("ii",20,400)??2.a1,a2=struct.unpack("ii",str)??3.print'a1:',a1??4.print'a2:',a2??5.??6.#----result:??7.#a1:20??8.#a2:400??str=str

7、uct.pack("ii",20,400)a1,a2=struct.unpack("ii",str)print'a1:',a1print'a2:',a2#----result:#a1:20#a2:400struct.calcsize  struct.calcsize用于計(jì)算格式字符串所對(duì)應(yīng)的結(jié)果的長度,如:struct.calcsize('ii'),返回8。因?yàn)閮蓚€(gè)int類型所占用的長度是8個(gè)字節(jié)。struct.pack_into,struct.unpack_from  這兩個(gè)函數(shù)在Python手冊(cè)中有所介紹,但沒有

8、給出如何使用的例子。其實(shí)它們?cè)趯?shí)際應(yīng)用中用的并不多。Google了很久,才找到一個(gè)例子,貼出來共享一下:1.importstruct??2.fromctypesimportcreate_string_buffer??3.??4.buf=create_string_buffer(12)??5.printrepr(buf.raw)??6.??7.s

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。