Re: [問題] 二進位檔轉ASCII檔

看板Python作者時間12年前 (2013/01/30 04:47), 編輯推噓3(302)
留言5則, 5人參與, 最新討論串3/7 (看更多)
※ 引述《tgrk (tgrk)》之銘言: : 實作把二進位檔變成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() with open('100M.bin','rb') as fin, open('100M.hex','w') as fout: fout.write(fin.read().encode('hex').capitalize()) 第三行 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.156.250

01/30 10:05, , 1F
This is Pythonic.
01/30 10:05, 1F

01/30 14:34, , 2F
great
01/30 14:34, 2F

01/30 19:01, , 3F
neat! 不過 capitalize() 改用 upper() 比較符合原問
01/30 19:01, 3F

01/30 20:23, , 4F
感謝指點奧義
01/30 20:23, 4F

01/31 03:06, , 5F
打錯了Orz...謝謝yu大指正..是upper()沒錯ˊˋ||
01/31 03:06, 5F
文章代碼(AID): #1H23L8U3 (Python)
討論串 (同標題文章)
文章代碼(AID): #1H23L8U3 (Python)