作者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)
1F:→ NewSpec:那句"PYTHON 只能那麽慢"实在是让人不顺眼阿... 01/30 02:02
2F:→ marksmanz:不要一直开档... hex_value = "%02x"%values[0]改一下 01/30 02:09
3F:→ swpoker:其实他是想上来证明是PYTHON慢~而非自己写不好 01/30 08:57
4F:→ jaw109:一次只读一个byte, 就算你用C来写跑起来也是很慢 01/30 18:38