" />

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

詳解python的二進(jìn)制轉(zhuǎn)化模塊

 更新時(shí)間:2022年01月04日 16:23:28   作者:微小冷  
這篇文章主要為大家介紹了python的二進(jìn)制轉(zhuǎn)化模塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

在pyton中,通過struct模塊來對(duì)二進(jìn)制進(jìn)行轉(zhuǎn)換,主要包括兩大類函數(shù),即用于打包的pack和用于解包的unpack。

其中,struct.pack的輸入格式為struct.pack(format, v1, v2, ...),其中format為格式字符串,v1,v2..為將要轉(zhuǎn)成bytes的字符。

例如

>>> import struct
>>> struct.pack('i', 15)
b'\x0f\x00\x00\x00'
>>> struct.pack('iii', 15, 16, 17)
b'\x0f\x00\x00\x00\x10\x00\x00\x00\x11\x00\x00\x00'
>>> struct.pack('b', 255)   #b格式的取值范圍是-128到127
struct.error: byte format requires -128 <= number <= 127
>>> struct.pack('B', 200)
b'\xc8'
>>> struct.pack('B', 71)    #128以內(nèi)可用ASCII表示
b'G'

i代表int,15對(duì)應(yīng)的二進(jìn)制代碼為F000,故其輸出為b\x0f\x00\x00\x00。當(dāng)格式字符串為iii時(shí),說明要將三個(gè)數(shù)字以整數(shù)類型轉(zhuǎn)化為二進(jìn)制。

其中,格式化字符串中的每個(gè)字符都代表一種數(shù)據(jù)類型,其中整型相關(guān)的字符如下,左側(cè)為帶符號(hào)整型,右側(cè)為無符號(hào)整型

 C語言類型 C語言類型標(biāo)準(zhǔn)大小
bsigned charBunsigned char1
hshortHunsigned short2
iintIunsigned int4
llongLunsigned long4
qlong longQunsigned long long8
nssize_tNsize_t 

其他類型

格式C 類型Python 類型標(biāo)準(zhǔn)大小
x填充字節(jié) 
cchar長(zhǎng)度為1的字節(jié)串 
?_Boolbool1
e float2
ffloatfloat4
ddoublefloat8
schar[]字節(jié)串 
pchar[]字節(jié)串 
Pvoid*整數(shù) 

struct中提供了獲取標(biāo)準(zhǔn)大小的函數(shù),calcsize:

>>> struct.calcsize('B')
1
>>> struct.calcsize('i')
4

除了聲明被格式化時(shí)的數(shù)據(jù)類型,struct還可以指定對(duì)齊方式,例如

>>> struct.pack("i",15)
b'\x0f\x00\x00\x00'
>>> struct.pack(">i",15)    #小端序
b'\x00\x00\x00\x0f'
>>> struct.pack("<i",15)    #大端序
b'\x0f\x00\x00\x00'

其對(duì)應(yīng)字符的含義分別為

@=<>!
本機(jī)本機(jī)小端大端網(wǎng)絡(luò)(大端)

其中默認(rèn)為@,即本機(jī)字節(jié)順序。

在熟悉了pack之后,與之對(duì)偶的unpack也就沒啥難度了

>>> test = struct.pack("III",125,1255,12555)
>>> struct.unpack("III",test)
(125, 1255, 12555)

除了packunpack,struct模塊還提供了C語言風(fēng)格的一對(duì)函數(shù)pack_intounpack_from,二者的聲明分別為

struct.pack_into(format, buffer, offset, v1, v2, ...)
struct.unpack_from(format, /, buffer, offset=0)

其中buffer表示緩沖流,在pack_into中,將v1,v2...offset的偏置打包入buffer中;在unpack_from中,將buffer中的數(shù)據(jù)從offset處依次取出。

struct中封裝了用于二進(jìn)制處理的類Struct,按照以往經(jīng)驗(yàn),其pack函數(shù)的實(shí)現(xiàn)方法很有可能是下面這種

def pack(format,*args):
    return Struct(format).pack(args)

其中Struct的初始化方法就是輸入一個(gè)格式化字符串,例如

>>> s = struct.Struct("III")
>>> s.pack(1,2,3)
b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 淺談Python __init__.py的作用

    淺談Python __init__.py的作用

    這篇文章主要介紹了淺談Python __init__.py的作用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 如何表示python中的相對(duì)路徑

    如何表示python中的相對(duì)路徑

    在本篇文章里小編給大家分享的是關(guān)于python相對(duì)路徑寫法以及相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • Python基于yield遍歷多個(gè)可迭代對(duì)象

    Python基于yield遍歷多個(gè)可迭代對(duì)象

    這篇文章主要介紹了Python基于yield遍歷多個(gè)可迭代對(duì)象,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python實(shí)現(xiàn)下載整個(gè)ftp目錄的方法

    python實(shí)現(xiàn)下載整個(gè)ftp目錄的方法

    這篇文章主要介紹了python實(shí)現(xiàn)下載整個(gè)ftp目錄的方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友可以一起來學(xué)習(xí)學(xué)習(xí)。
    2017-01-01
  • OpenCV 圖像旋轉(zhuǎn)、平移、縮放操作代碼

    OpenCV 圖像旋轉(zhuǎn)、平移、縮放操作代碼

    這篇文章主要介紹了OpenCV 圖像旋轉(zhuǎn)、平移、縮放,本文是 OpenCV圖像視覺入門之路的第7篇文章,本文詳細(xì)的進(jìn)行了圖像的縮放 cv2.resize()、旋轉(zhuǎn) cv2.flip()、平移 cv2.warpAffine()等操作,需要的朋友可以參考下
    2022-12-12
  • 重寫django的model下的objects模型管理器方式

    重寫django的model下的objects模型管理器方式

    這篇文章主要介紹了重寫django的model下的objects模型管理器方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Jupyter notebook如何修改平臺(tái)字體

    Jupyter notebook如何修改平臺(tái)字體

    這篇文章主要介紹了Jupyter notebook如何修改平臺(tái)字體,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python pass詳細(xì)介紹及實(shí)例代碼

    Python pass詳細(xì)介紹及實(shí)例代碼

    這篇文章主要介紹了Python pass詳細(xì)介紹及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 基于PyQT5制作一個(gè)二維碼生成器

    基于PyQT5制作一個(gè)二維碼生成器

    這篇文章主要介紹了利用PyQT5制作一個(gè)簡(jiǎn)單的二維碼生成器,并打包成exe可執(zhí)行程序。文中的示例代碼講解詳細(xì),感興趣的同學(xué)可以了解一下
    2021-12-12
  • django中F與Q查詢的使用

    django中F與Q查詢的使用

    一般查詢都是單條件查詢,F(xiàn)和Q是組合條件查詢,本文主要介紹了django中F與Q查詢的使用,感興趣的可以了解一下
    2021-06-06

最新評(píng)論

郑州市| 桐城市| 方正县| 民勤县| 广宗县| 屯留县| 清水河县| 衢州市| 宁强县| 儋州市| 建始县| 巩留县| 麦盖提县| 漯河市| 延川县| 彭泽县| 东乡族自治县| 丁青县| 五大连池市| 梁平县| 呼图壁县| 阿巴嘎旗| 油尖旺区| 岳西县| 杭州市| 罗平县| 固原市| 临湘市| 德令哈市| 德江县| 罗田县| 南华县| 道孚县| 凤庆县| 枝江市| 宣汉县| 阳信县| 延津县| 上林县| 揭西县| 微山县|