作者bob123 ()
看板Python
标题Re: [问题] 二进位档转ASCII档
时间Wed Jan 30 04:47:03 2013
※ 引述《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
1F:推 juiz:This is Pythonic. 01/30 10:05
2F:→ NewSpec:great 01/30 14:34
3F:推 yuxio:neat! 不过 capitalize() 改用 upper() 比较符合原问 01/30 19:01
4F:推 tgrk:感谢指点奥义 01/30 20:23
5F:→ bob123:打错了Orz...谢谢yu大指正..是upper()没错ˊˋ|| 01/31 03:06