最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用struct庫的用法小結

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

struct簡介

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

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

故提供一個庫來做轉換。

常用函數(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ù),注意結果是一個數(shù)組

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

上代碼是按小端序列進行解析的

10被解析成了16

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

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

struct.calcsize(format:str)

按format的格式計算這個格式本應該的大小

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

B是1個字節(jié),H是2個字節(jié),I是4個字節(jié),共7個字節(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個字節(jié)
=nativestandard不作變化
<little-endianstandard不作變化
>big-endianstandard不作變化
!network (= big-endian)standard不作變化

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

相關文章

  • 使用Flink與Python進行實時數(shù)據(jù)處理的基本步驟

    使用Flink與Python進行實時數(shù)據(jù)處理的基本步驟

    Apache Flink是一個流處理框架,用于實時處理和分析數(shù)據(jù)流,PyFlink是Apache Flink的Python API,它允許用戶使用Python語言來編寫Flink作業(yè),進行實時數(shù)據(jù)處理,以下是如何使用Flink與Python進行實時數(shù)據(jù)處理的基本步驟,需要的朋友可以參考下
    2024-09-09
  • 20行代碼教你用python給證件照換底色的方法示例

    20行代碼教你用python給證件照換底色的方法示例

    這篇文章主要介紹了20行代碼教你用python給證件照換底色的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • tensorflow中tf.reduce_mean函數(shù)的使用

    tensorflow中tf.reduce_mean函數(shù)的使用

    這篇文章主要介紹了tensorflow中tf.reduce_mean函數(shù)的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • python如何查看微信消息撤回

    python如何查看微信消息撤回

    這篇文章主要為大家詳細介紹了python實現(xiàn)查看微信消息撤回的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python astype(np.float)函數(shù)使用方法解析

    Python astype(np.float)函數(shù)使用方法解析

    這篇文章主要介紹了Python astype(np.float)函數(shù)使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 在Python中通過threading模塊定義和調用線程的方法

    在Python中通過threading模塊定義和調用線程的方法

    由于著名的GIL的存在,Python中雖然能創(chuàng)建多條線程,但卻不能同時執(zhí)行...anyway,這里我們還是來學習一下在Python中通過threading模塊定義和調用線程的方法
    2016-07-07
  • python中文分詞教程之前向最大正向匹配算法詳解

    python中文分詞教程之前向最大正向匹配算法詳解

    中文分詞是中文文本處理的一個基礎性工作,然而長久以來,在Python編程領域,一直缺少高準確率、高效率的分詞組件。下面這篇文章主要給大家介紹了關于python中文分詞教程之前向最大正向匹配算法的相關資料,需要的朋友可以參考下。
    2017-11-11
  • 對python中各個response的使用說明

    對python中各個response的使用說明

    今天小編就為大家分享一篇對python中各個response的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 使用Python的turtle模塊畫國旗

    使用Python的turtle模塊畫國旗

    這篇文章主要為大家詳細介紹了用Python的turtle模塊畫國旗,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • OpenCV-Python實現(xiàn)腐蝕與膨脹的實例

    OpenCV-Python實現(xiàn)腐蝕與膨脹的實例

    形態(tài)學操作主要包含:腐蝕,膨脹,開運算,閉運算,形態(tài)學梯度運算,頂帽運算,黑帽運算等操作,本文主要介紹了腐蝕與膨脹,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論

大荔县| 大方县| 达尔| 前郭尔| 万年县| 光山县| 休宁县| 绵竹市| 礼泉县| 扎兰屯市| 乌鲁木齐市| 南宫市| 元氏县| 麦盖提县| 通江县| 和平县| 万山特区| 汶川县| 汪清县| 昌吉市| 大埔县| 清镇市| 株洲县| 得荣县| 剑川县| 铜陵市| 临安市| 高安市| 呼图壁县| 兴城市| 类乌齐县| 永修县| 永善县| 班玛县| 仙游县| 长垣县| 乌鲁木齐县| 长汀县| 舒城县| 龙山县| 华亭县|