电竞比分网-中国电竞赛事及体育赛事平台

分享

Python讀取二進(jìn)制文件 --- webpro程序愛好者 asp,asp.net,jav...

 weicat 2011-04-09
Python讀取二進(jìn)制文件





Python里雖然可以通過’b的標(biāo)記來區(qū)別普通文件和二進(jìn)制文件,但是依然是把二進(jìn)制文件當(dāng)作普通文本處理。要讀寫二進(jìn)制文件,需要用struct庫來作pack和unpack。

比如我最近拿到一個(gè)如下數(shù)據(jù)結(jié)構(gòu)的二進(jìn)制文件

Code
  1. structDEMTYPE{
  2. introw;
  3. intcol;
  4. floatxmin;
  5. floatymin;
  6. floatxmax;
  7. floatymax;
  8. floatsize;
  9. floatvmin;
  10. floatvmax;
  11. floatscale;
  12. float*data;
  13. };

其中data是一個(gè)長度為row*col的數(shù)組。要讀取這樣一個(gè)二進(jìn)制文件,可以用這樣的代碼
Code

  1. row, col, xmin, ymin, xmax, ymax, size, vmin, vmax, scale =
  2. struct.unpack(<2i8f, datastring[:(4*2+4*8)])
  3. vdata =struct.unpack(<+str(row*col)+f, datastring[(4*2+4*8):])

核心是unpack的第一個(gè)參數(shù),用來標(biāo)識(shí)二進(jìn)制數(shù)據(jù)的格式,其中<表示little-endian,i表示整型數(shù),f表示單精度浮點(diǎn)數(shù),數(shù)字是量詞。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多