欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用struct庫(kù)的用法小結(jié)

 更新時(shí)間:2022年05月09日 11:40:35   作者:serfend  
struct模塊執(zhí)行Python值和以Python?bytes表示的C結(jié)構(gòu)體之間的轉(zhuǎn)換,這可以用于處理存儲(chǔ)在文件中或來自網(wǎng)絡(luò)連接以及其他源的二進(jìn)制數(shù)據(jù),下面介紹下Python使用struct庫(kù)的用法,感興趣的朋友一起看看吧

struct簡(jiǎn)介

看到struct這么英文單詞,大家應(yīng)該并不陌生,因?yàn)閏/c++中就有struct,在那里struct叫做結(jié)構(gòu)體。在Python中也使用struct,這充分說明了這個(gè)struct應(yīng)該和c/c++中的struct有很深的淵源。Python正是使用struct模塊執(zhí)行Python值和C結(jié)構(gòu)體之間的轉(zhuǎn)換,從而形成Python字節(jié)對(duì)象。它使用格式字符串作為底層C結(jié)構(gòu)體的緊湊描述,進(jìn)而根據(jù)這個(gè)格式字符串轉(zhuǎn)換成Python值。

準(zhǔn)確地講,Python沒有專門處理字節(jié)的數(shù)據(jù)類型。但由于b'str'可以表示字節(jié),所以,字節(jié)數(shù)組=二進(jìn)制str。而在C語言中,我們可以很方便地用struct、union來處理字節(jié),以及字節(jié)和int,float的轉(zhuǎn)換。

故提供一個(gè)庫(kù)來做轉(zhuǎn)換。

常用函數(shù)

struct.pack(format:str, v1, v2, …)

按format的格式打包v1、v2等參數(shù)

import struct
result = [1,2,3,4,5]
print([struct.pack('<B', x) for x in result])
# [b'\x01', b'\x02', b'\x03', b'\x04', b'\x05']

struct.unpack(format:str,buffer:bytes)

按format的格式解包buffer數(shù)據(jù),注意結(jié)果是一個(gè)數(shù)組

import struct
result = bytes.fromhex('10002030000000')
print(struct.unpack('<BHI', result))
# (16, 8192, 48)

上代碼是按小端序列進(jìn)行解析的

10被解析成了16

0020被解析成了 0x00 + 0x20 * 256 = 32*256 = 8192

30000000被解析成了 0x30 + 0x0 * 256 + 0x0 * 16³ + 0x0 * 256² = 48

struct.calcsize(format:str)

按format的格式計(jì)算這個(gè)格式本應(yīng)該的大小

import struct
print(struct.calcsize('<BHI')) # 7

B是1個(gè)字節(jié),H是2個(gè)字節(jié),I是4個(gè)字節(jié),共7個(gè)字節(jié)

format參數(shù)的用法

數(shù)據(jù)

FormatC TypePython字節(jié)數(shù)
xpad byteNone1
ccharint1
bsigned charint1
Bunsigned charint1
?Boolbool1
hshortint2
Hunsigned shortint2
iintint4
Iunsigned intint4
llongint4
Lunsigned longint4
qlong longint8
Qunsigned long longint8
ffloatfloat4
ddoublefloat8
schar[]bytes1
pchar[]bytes1
Pvoid *int0

描述符

CharacterByte orderSizealignment
@nativenative湊足4個(gè)字節(jié)
=nativestandard不作變化
<little-endianstandard不作變化
>big-endianstandard不作變化
!network (= big-endian)standard不作變化

到此這篇關(guān)于Python使用struct庫(kù)的用法小結(jié)的文章就介紹到這了,更多相關(guān)Python使用struct庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)在不同坐標(biāo)系中繪制曲線

    Python實(shí)現(xiàn)在不同坐標(biāo)系中繪制曲線

    這篇文章主要為大家學(xué)習(xí)介紹了Python如何實(shí)現(xiàn)在不同坐標(biāo)系中繪制曲線,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-07-07
  • 詳解Django配置JWT認(rèn)證方式

    詳解Django配置JWT認(rèn)證方式

    這篇文章主要介紹了Django 配置JWT認(rèn)證方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 用Python腳本來刪除指定容量以上的文件的教程

    用Python腳本來刪除指定容量以上的文件的教程

    這篇文章主要介紹了用Python腳本來刪除指定容量以上的文件的教程,是Python操作文件的一個(gè)簡(jiǎn)單實(shí)踐,需要的朋友可以參考下
    2015-05-05
  • Python語音識(shí)別API實(shí)現(xiàn)文字轉(zhuǎn)語音的幾種方法

    Python語音識(shí)別API實(shí)現(xiàn)文字轉(zhuǎn)語音的幾種方法

    本文主要介紹了Python語音識(shí)別API實(shí)現(xiàn)文字轉(zhuǎn)語音的幾種方法,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python?Fuzzywuzzy庫(kù)基本函數(shù)及模糊字符串匹配應(yīng)用實(shí)戰(zhàn)

    Python?Fuzzywuzzy庫(kù)基本函數(shù)及模糊字符串匹配應(yīng)用實(shí)戰(zhàn)

    fuzzywuzzy?是一個(gè)用于模糊字符串匹配的?Python?庫(kù),它基于編輯距離算法,提供了多個(gè)函數(shù)來比較字符串之間的相似性,在實(shí)際開發(fā)中,字符串匹配是一項(xiàng)常見但具有挑戰(zhàn)性的任務(wù),用戶可能犯拼寫錯(cuò)誤,使用縮寫或者輸入同義詞,因此,我們需要一種方法來處理這些情況
    2023-12-12
  • python模擬實(shí)現(xiàn)斗地主發(fā)牌

    python模擬實(shí)現(xiàn)斗地主發(fā)牌

    這篇文章主要為大家詳細(xì)介紹了python代碼模擬實(shí)現(xiàn)斗地主發(fā)牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • python?ConfigParser庫(kù)的使用及遇到的坑

    python?ConfigParser庫(kù)的使用及遇到的坑

    這篇文章主要介紹了python?ConfigParser庫(kù)的使用及遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python中的魔術(shù)方法Magic?Methods使用實(shí)例全面指南

    Python中的魔術(shù)方法Magic?Methods使用實(shí)例全面指南

    在Python中,魔術(shù)方法Magic?Methods是一種特殊的方法,它們以雙下劃線開頭和結(jié)尾,如__init__、__str__等,這些方法允許定制類的行為,使得對(duì)象更具有靈活性和可定制性,本文將深入探討Python中一些常用的魔術(shù)方法,以及如何使用它們來定制類與對(duì)象
    2024-01-01
  • python安裝第三方庫(kù)如xlrd的方法

    python安裝第三方庫(kù)如xlrd的方法

    這篇文章主要介紹了python安裝第三方庫(kù)如xlrd的方法,本文通過兩種方法給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • OpenCV使用KNN完成OCR手寫體識(shí)別

    OpenCV使用KNN完成OCR手寫體識(shí)別

    這篇文章主要為大家介紹了OpenCV使用KNN完成OCR手寫體識(shí)別示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論