[問題] 二進位檔轉ASCII檔

看板Python作者 (tgrk)時間12年前 (2013/01/29 23:22), 編輯推噓0(004)
留言4則, 4人參與, 最新討論串1/7 (看更多)
實作把二進位檔變成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)

01/30 02:02, , 1F
那句"PYTHON 只能那麼慢"實在是讓人不順眼阿...
01/30 02:02, 1F

01/30 02:09, , 2F
不要一直開檔... hex_value = "%02x"%values[0]改一下
01/30 02:09, 2F

01/30 08:57, , 3F
其實他是想上來證明是PYTHON慢~而非自己寫不好
01/30 08:57, 3F

01/30 18:38, , 4F
一次只讀一個byte, 就算你用C來寫跑起來也是很慢
01/30 18:38, 4F
文章代碼(AID): #1H1-axGg (Python)
討論串 (同標題文章)
文章代碼(AID): #1H1-axGg (Python)