python處理二進(jìn)制數(shù)據(jù)

struct

處理二進(jìn)制數(shù)據(jù)離不開python的struct模塊,struct理解上你可以把它理解為c語(yǔ)言的結(jié)構(gòu)體,使用該模塊的pack和unpack方法,可以很容易的把二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為常用的類型數(shù)據(jù),如整型、字符型等
結(jié)構(gòu)體如下:

struct Header

{

    unsigned short id;

    char[4] tag;

    unsigned int version;

    unsigned int count;

}

unpack

將二進(jìn)制數(shù)據(jù)流解析為常用的數(shù)據(jù)類型,例如:

arsc_file = open(file, "rb")                 #二進(jìn)制讀取文件
data = arsc_file.read(12)                      #讀取12字節(jié)
table_type_2,head2,file4,package4 = struct.unpack("2H2I", data) 
    #將這12個(gè)字節(jié)分拆為2個(gè)unsigned short(H)和2個(gè)unsigned int(I)類型數(shù)據(jù)

pack

把常用的數(shù)據(jù)類型打包成二進(jìn)制數(shù)據(jù),例如:

new_head2 = 2                                           
head2 = 1
file4 = 8                                           
new_data = struct.pack("2H2I4H", table_type_2, new_head2, file4, package4,head2,head2,head2,head2)  
#把常用的類型數(shù)據(jù)轉(zhuǎn)換二進(jìn)制流,參數(shù)一是二進(jìn)制流格式組成

struct里面規(guī)定的數(shù)據(jù)類型表

| Format | C Type | Python | 字節(jié)數(shù)
| ------------- |:-------------:| ----------:|
| x | pad byte | no value | 1
| c | char| string of length 1 | 1
|b |signed char|integer|1
|B| unsigned char| integer| 1
|?| _Bool| bool| 1
|h |short |integer |2
|H |unsigned short |integer| 2
|i |int |integer |4
|I| unsigned int| integer or long| 4
|l| long| integer| 4
|L |unsigned long |long |4
|q| long long| long |8
|Q |unsigned long |long long |8
|f |float |float |4
|d |double |float |8
|s| char[]| string |1
|p |char[] |string |1
|P |void * |long|

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 有的時(shí)候需要用python處理二進(jìn)制數(shù)據(jù),比如,存取文件,socket操作時(shí).這時(shí)候,可以使用python的str...
    Ten_Minutes閱讀 591評(píng)論 0 0
  • 最近在學(xué)習(xí)python網(wǎng)絡(luò)編程這一塊,在寫簡(jiǎn)單的socket通信代碼時(shí),遇到了struct這個(gè)模塊的使用,當(dāng)時(shí)不太...
    Otis4631閱讀 3,375評(píng)論 0 0
  • about 這篇文章是Python2 的官方文檔 7.3. struct — Interpret strings ...
    龐貝船長(zhǎng)閱讀 6,277評(píng)論 1 3
  • 該模塊在Python值和表示為Python bytes對(duì)象的C結(jié)緩沖區(qū)構(gòu)體之間進(jìn)行轉(zhuǎn)換。可用于處理存儲(chǔ)在文件中或者...
    lakerszhy閱讀 1,348評(píng)論 0 0
  • 我真是個(gè)豬啊,我在網(wǎng)上報(bào)了一個(gè)21天減肥計(jì)劃,每天按照課程表完成規(guī)定的訓(xùn)練然后線上打卡,堅(jiān)持21天報(bào)名費(fèi)原退回,忘...
    丑貓_e105閱讀 341評(píng)論 0 0