" />

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

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

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

在pyton中,通過(guò)struct模塊來(lái)對(duì)二進(jìn)制進(jìn)行轉(zhuǎn)換,主要包括兩大類(lèi)函數(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以?xún)?nèi)可用ASCII表示
b'G'

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

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

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

其他類(lèi)型

格式C 類(lèi)型Python 類(lèi)型標(biāo)準(zhǔn)大小
x填充字節(jié)無(wú) 
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ù)類(lèi)型,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也就沒(méi)啥難度了

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

除了packunpack,struct模塊還提供了C語(yǔ)言風(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)制處理的類(lèi)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é)

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

相關(guān)文章

  • Python中的super用法詳解

    Python中的super用法詳解

    這篇文章主要介紹了Python中的super用法詳解,本文講解了關(guān)于super問(wèn)題的發(fā)現(xiàn)與提出、走進(jìn)Python的源碼世界分析super的實(shí)現(xiàn)、延續(xù)的討論super等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • Python 命令行參數(shù)sys.argv

    Python 命令行參數(shù)sys.argv

    命令行參數(shù)是通過(guò)sys.argv[]來(lái)獲取的,sys.argv[0]是代碼文件本身的路徑,因此參數(shù)是從1開(kāi)始的。比如設(shè)置參數(shù)為: spe
    2008-09-09
  • opencv+圖像處理(Image Processing in OpenCV) 4-0改變顏色空間的過(guò)程

    opencv+圖像處理(Image Processing in OpenCV) 

    這篇文章主要介紹了opencv+圖像處理(Image Processing in OpenCV) 4-0改變顏色空間,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Python繪圖示例程序中的幾個(gè)語(yǔ)法糖果你知道嗎

    Python繪圖示例程序中的幾個(gè)語(yǔ)法糖果你知道嗎

    這篇文章主要為大家詳細(xì)介紹了Python繪圖示例程序中的幾個(gè)語(yǔ)法糖果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Pandas中DataFrame數(shù)據(jù)刪除詳情

    Pandas中DataFrame數(shù)據(jù)刪除詳情

    這篇文章主要以介紹的是Pandas中DataFrame的數(shù)據(jù)刪除的相關(guān)資料,主要使用drop、del方式,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 使用Pytorch Geometric進(jìn)行鏈接預(yù)測(cè)的實(shí)現(xiàn)代碼

    使用Pytorch Geometric進(jìn)行鏈接預(yù)測(cè)的實(shí)現(xiàn)代碼

    PyTorch Geometric (PyG)是構(gòu)建圖神經(jīng)網(wǎng)絡(luò)模型和實(shí)驗(yàn)各種圖卷積的主要工具,在本文中我們將通過(guò)鏈接預(yù)測(cè)來(lái)對(duì)其進(jìn)行介紹,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2023-10-10
  • python 圖片二值化處理(處理后為純黑白的圖片)

    python 圖片二值化處理(處理后為純黑白的圖片)

    這篇文章主要介紹了python 圖片二值化處理(處理后為純黑白的圖片),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Python爬取豆瓣視頻信息代碼實(shí)例

    Python爬取豆瓣視頻信息代碼實(shí)例

    這篇文章主要介紹了Python爬取豆瓣視頻信息代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python第三方Window模塊文件的幾種安裝方法

    Python第三方Window模塊文件的幾種安裝方法

    這篇文章主要介紹了Python第三方Window模塊文件安裝方法,需要的朋友可以參考下
    2018-11-11
  • 解決python大批量讀寫(xiě).doc文件的問(wèn)題

    解決python大批量讀寫(xiě).doc文件的問(wèn)題

    今天小編就為大家分享一篇解決python大批量讀寫(xiě).doc文件的問(wèn)題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論