作者tgrk (tgrk)
看板Python
標題[問題] 二進位檔轉ASCII檔
時間Tue Jan 29 23:22:32 2013
實作把二進位檔變成ASCII文字檔的程式,類似BASE64轉換。
構想是每次讀取二進位檔1byte,
然後轉成相對應的十六進位數字,存入文字檔中。
如下,檔案會變成兩倍大。
二進位檔 文字檔
1111 1110 1111 1110 --> FE FE
現在問題是這個程式很慢,1MB檔案就要跑約十分鐘。
我知道1byte就來一個迴圈,數目太多了。
但這是程式寫法不好的問題?
還是PYTHON 只能那麼慢?
while 1:
values = array.array('B') # array of integer
p=values.read(orinobj, 1) # orinobj is a binary file
if p:
break
else:
int_value = values[0]
if len(hex(int_value)) ==3:
hex_value ='0'+hex(int_value)[2:3]
else:
hex_value =hex(int_value)[2:4]
txtgobj=open(txt, 'a')
txtgobj.write(hex_value)
txtgobj.close()
orinobj.close()
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 42.70.205.62
※ 編輯: tgrk 來自: 42.70.205.62 (01/29 23:24)
→ NewSpec:那句"PYTHON 只能那麼慢"實在是讓人不順眼阿... 01/30 02:02
→ marksmanz:不要一直開檔... hex_value = "%02x"%values[0]改一下 01/30 02:09
→ swpoker:其實他是想上來證明是PYTHON慢~而非自己寫不好 01/30 08:57
→ jaw109:一次只讀一個byte, 就算你用C來寫跑起來也是很慢 01/30 18:38