亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

簡單介紹Python中的struct模塊

 更新時間:2015年04月28日 17:30:52   作者:廖雪峰  
這篇文章主要介紹了Python中的struct模塊,代碼基于Python2.x版本,需要的朋友可以參考下

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

在Python中,比方說要把一個32位無符號整數(shù)變成字節(jié),也就是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'

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

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

struct的pack函數(shù)把任意數(shù)據(jù)類型變成字符串:

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

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

>表示字節(jié)順序是big-endian,也就是網(wǎng)絡序,I表示4字節(jié)無符號整數(shù)。

后面的參數(shù)個數(shù)要和處理指令一致。

unpack把str變成相應的數(shù)據(jù)類型:

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

根據(jù)>IH的說明,后面的str依次變?yōu)镮:4字節(jié)無符號整數(shù)和H:2字節(jié)無符號整數(shù)。

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

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

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

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

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

讀入前30個字節(jié)來分析:

>>> 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格式采用小端方式存儲數(shù)據(jù),文件頭的結構按順序如下:

兩個字節(jié):'BM'表示W(wǎng)indows位圖,'BA'表示OS/2位圖;
一個4字節(jié)整數(shù):表示位圖大小;
一個4字節(jié)整數(shù):保留位,始終為0;
一個4字節(jié)整數(shù):實際圖像的偏移量;
一個4字節(jié)整數(shù):Header的字節(jié)數(shù);
一個4字節(jié)整數(shù):圖像寬度;
一個4字節(jié)整數(shù):圖像高度;
一個2字節(jié)整數(shù):始終為1;
一個2字節(jié)整數(shù):顏色數(shù)。

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

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

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

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

相關文章

  • Python調(diào)用API接口實現(xiàn)人臉識別

    Python調(diào)用API接口實現(xiàn)人臉識別

    本文主要介紹了Python調(diào)用API接口實現(xiàn)人臉識別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Django 用戶認證組件使用詳解

    Django 用戶認證組件使用詳解

    這篇文章主要介紹了Django 用戶認證組件使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python利用pyttsx3 API實現(xiàn)文本轉語音處理

    python利用pyttsx3 API實現(xiàn)文本轉語音處理

    這篇文章主要為大家詳細介紹了Python如何利用pyttsx3 API實現(xiàn)文本轉語音處理,文中有詳細的示例代碼,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-06-06
  • python備份文件的腳本

    python備份文件的腳本

    作用:將目錄備份到其他路徑。
    2008-08-08
  • Python中一些自然語言工具的使用的入門教程

    Python中一些自然語言工具的使用的入門教程

    這篇文章主要介紹了Python中一些自然語言工具的使用的入門教程,本文來自于IBM官方網(wǎng)站技術文檔,需要的朋友可以參考下
    2015-04-04
  • Python根據(jù)歐拉角求旋轉矩陣的實例

    Python根據(jù)歐拉角求旋轉矩陣的實例

    今天小編就為大家分享一篇Python根據(jù)歐拉角求旋轉矩陣的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • OpenCV-Python實現(xiàn)圖像梯度與Sobel濾波器

    OpenCV-Python實現(xiàn)圖像梯度與Sobel濾波器

    在實際應用中我們只需要將圖像矩陣與Sobel濾波器卷積就可以得到圖像的梯度矩陣了。具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • python控制臺實現(xiàn)tab補全和清屏的例子

    python控制臺實現(xiàn)tab補全和清屏的例子

    今天小編就為大家分享一篇python控制臺實現(xiàn)tab補全和清屏的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python中if elif else及縮進的使用簡述

    Python中if elif else及縮進的使用簡述

    這篇文章主要介紹了Python中if elif else及縮進的使用,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • Python中NumPy的線性代數(shù)子模塊linalg詳解

    Python中NumPy的線性代數(shù)子模塊linalg詳解

    這篇文章主要介紹了Python中NumPy的線性代數(shù)子模塊linalg詳解,NumPy 的線性代數(shù)子模塊linalg提供了 20 余個函數(shù),用于求解行列式、逆矩陣、特征值、特征向量,以及矩陣分解等,需要的朋友可以參考下
    2023-08-08

最新評論