亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

簡單介紹Python中的struct模塊

2020-01-04 19:21:06
字體:
來源:轉載
供稿:網友

準確地講,Python沒有專門處理字節的數據類型。但由于str既是字符串,又可以表示字節,所以,字節數組=str。而在C語言中,我們可以很方便地用struct、union來處理字節,以及字節和int,float的轉換。

在Python中,比方說要把一個32位無符號整數變成字節,也就是4個長度的str,你得配合位運算符這么寫:

>>> n = 10240099>>> b1 = chr((n & 0xff000000) >> 24)>>> b2 = chr((n & 0xff0000) >> 16)>>> b3 = chr((n & 0xff00) >> 8)>>> b4 = chr(n & 0xff)>>> s = b1 + b2 + b3 + b4>>> s'/x00/x9c@c'

非常麻煩。如果換成浮點數就無能為力了。

好在Python提供了一個struct模塊來解決str和其他二進制數據類型的轉換。

struct的pack函數把任意數據類型變成字符串:

>>> import struct>>> struct.pack('>I', 10240099)'/x00/x9c@c'

pack的第一個參數是處理指令,'>I'的意思是:

>表示字節順序是big-endian,也就是網絡序,I表示4字節無符號整數。

后面的參數個數要和處理指令一致。

unpack把str變成相應的數據類型:

>>> struct.unpack('>IH', '/xf0/xf0/xf0/xf0/x80/x80')(4042322160, 32896)

根據>IH的說明,后面的str依次變為I:4字節無符號整數和H:2字節無符號整數。

所以,盡管Python不適合編寫底層操作字節流的代碼,但在對性能要求不高的地方,利用struct就方便多了。

struct模塊定義的數據類型可以參考Python官方文檔:

https://docs.python.org/2/library/struct.html#format-characters

Windows的位圖文件(.bmp)是一種非常簡單的文件格式,我們來用struct分析一下。

首先找一個bmp文件,沒有的話用“畫圖”畫一個。

讀入前30個字節來分析:

>>> s = '/x42/x4d/x38/x8c/x0a/x00/x00/x00/x00/x00/x36/x00/x00/x00/x28/x00/x00/x00/x80/x02/x00/x00/x68/x01/x00/x00/x01/x00/x18/x00'

BMP格式采用小端方式存儲數據,文件頭的結構按順序如下:

兩個字節:'BM'表示Windows位圖,'BA'表示OS/2位圖;
一個4字節整數:表示位圖大??;
一個4字節整數:保留位,始終為0;
一個4字節整數:實際圖像的偏移量;
一個4字節整數:Header的字節數;
一個4字節整數:圖像寬度;
一個4字節整數:圖像高度;
一個2字節整數:始終為1;
一個2字節整數:顏色數。

所以,組合起來用unpack讀?。?/p>

>>> struct.unpack('<ccIIIIIIHH', s)('B', 'M', 691256, 0, 54, 40, 640, 360, 1, 24)

結果顯示,'B'、'M'說明是Windows位圖,位圖大小為640x360,顏色數為24。

請編寫一個bmpinfo.py,可以檢查任意文件是否是位圖文件,如果是,打印出圖片大小和顏色數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧洲中文字幕国产精品| 日本伊人精品一区二区三区介绍| 青草青草久热精品视频在线网站| 日韩免费视频在线观看| 大量国产精品视频| 日韩免费观看网站| 海角国产乱辈乱精品视频| 黑人精品xxx一区| 亚洲国产三级网| 国自产精品手机在线观看视频| 亚洲aa在线观看| 精品无人区乱码1区2区3区在线| 国产亚洲欧美日韩一区二区| 国产精品久久久久久久久久久不卡| 国产免费一区二区三区在线观看| 九色精品免费永久在线| 久久精品亚洲精品| 亚洲精品福利在线| 97视频com| 伦伦影院午夜日韩欧美限制| 91精品成人久久| 一夜七次郎国产精品亚洲| 欧美一区三区三区高中清蜜桃| 热久久99这里有精品| 亚洲系列中文字幕| 91国产一区在线| 日韩最新在线视频| 日韩精品极品视频免费观看| 国产精品视频专区| 日韩免费在线电影| 在线亚洲午夜片av大片| 国产成+人+综合+亚洲欧美丁香花| 精品视频www| 国产精品第10页| 亚洲美女视频网站| 97碰碰碰免费色视频| 国产女人18毛片水18精品| 久久亚洲欧美日韩精品专区| 国模精品一区二区三区色天香| 日韩国产欧美精品在线| 97视频在线观看网址| 蜜臀久久99精品久久久无需会员| 亚洲国产高潮在线观看| 亚洲加勒比久久88色综合| 国产精品日本精品| 这里只有精品丝袜| www.99久久热国产日韩欧美.com| 一本色道久久综合亚洲精品小说| 久久人人爽亚洲精品天堂| 欧美激情视频在线免费观看 欧美视频免费一| 日本一区二三区好的精华液| 日韩有码片在线观看| 欧美激情综合亚洲一二区| 国产精欧美一区二区三区| 中国日韩欧美久久久久久久久| 亚洲精品国产精品久久清纯直播| 懂色aⅴ精品一区二区三区蜜月| 亚洲精品久久久久久久久久久久久| 国产精品va在线播放我和闺蜜| 欧美成人亚洲成人日韩成人| 国产精品偷伦一区二区| 一本大道香蕉久在线播放29| 一个人看的www欧美| 国产亚洲精品久久久优势| 欧美国产视频日韩| 亚洲缚视频在线观看| 国产精品日韩在线一区| 欧美激情久久久| 亚洲第一福利在线观看| 久久久久久av| 成人亲热视频网站| 欧美激情第1页| 九九热99久久久国产盗摄| 欧美午夜激情在线| 成人中文字幕+乱码+中文字幕| 91亚洲精品一区二区| 91香蕉国产在线观看| 国产精品久久久久99| 国产精选久久久久久| 国产成人jvid在线播放| 国产精品电影一区| 亚洲精品在线视频| 中文字幕亚洲欧美日韩在线不卡| 国产成人jvid在线播放| 日韩在线播放av| 亚洲精品国产精品久久清纯直播| 国产亚洲人成网站在线观看| 国产精品99久久久久久人| 午夜精品福利电影| 国产精品一区二区久久国产| 国产精品久久久久久久美男| 成人国产亚洲精品a区天堂华泰| 欧美高清视频在线| 国产精品福利网| 国产亚洲人成网站在线观看| 国产精品中文字幕久久久| 在线视频精品一| 午夜精品蜜臀一区二区三区免费| 欧美尺度大的性做爰视频| 九九九久久国产免费| 国产一区二区黑人欧美xxxx| 国产精品流白浆视频| 国产视频在线观看一区二区| 国产精品国内视频| 久久久国产精品x99av| 亚洲美女av网站| 国产手机视频精品| 久久久免费精品| 国产欧美在线视频| 精品国产一区二区三区久久久| 色视频www在线播放国产成人| 久久国产精品99国产精| 国产精品久久久久福利| 成人有码视频在线播放| 久久中国妇女中文字幕| 国产va免费精品高清在线观看| 日韩成人激情在线| 国产精品欧美日韩一区二区| 久久亚洲精品一区二区| 中文字幕九色91在线| 欧美自拍视频在线| 中文欧美日本在线资源| 精品国产欧美成人夜夜嗨| 亚洲片国产一区一级在线观看| 亚洲第一精品久久忘忧草社区| 久久久久久久91| 精品在线小视频| 国产亚洲免费的视频看| 欧美一性一乱一交一视频| 日韩精品视频观看| 欧美电影院免费观看| 欧美xxxx做受欧美| 亚洲人高潮女人毛茸茸| 久久综合九色九九| 久久精品99国产精品酒店日本| 91九色单男在线观看| 久久久女人电视剧免费播放下载| 国产日韩欧美日韩| 国产成人精品久久| 欧美中文在线观看国产| 国产精品久久久久久久久久小说| 欧美大尺度在线观看| 成人免费观看网址| 欧美日韩国产成人高清视频| 欧美色图在线视频| 欧美做爰性生交视频| 中文字幕亚洲综合久久| 久久久在线免费观看| 国产精品色午夜在线观看| 91久久久在线| 色噜噜亚洲精品中文字幕| 欧美国产日韩在线| 亚洲欧美另类中文字幕| 国产91精品在线播放| 中文字幕日韩欧美精品在线观看| 欧美成人h版在线观看| 亚洲人成电影网站| 成人福利免费观看| 欧美成人一二三| 日本19禁啪啪免费观看www| 91av视频在线观看| 亚洲三级 欧美三级| 国产伦精品一区二区三区精品视频| 在线日韩第一页|