[英]Python Hex File Write
我有一個看起來像這樣的列表:
['\x12', '\x13', '\x05', ... , '\xF2']
並且我正在嘗試將其以二進制形式寫入文件,如下所示:
00010010
00010011
00000101
11110010
這就是我現在正在做的:
for dataLine in readData:
print int(binascii.hexlify(dataLine), 16)
然后像這樣轉換為8位二進制文件:
def dobin(n):
digs = []
while n > 0:
digs.append(str(n % 2))
n /= 2
for x in range(len(digs), 8):
digs.append('0')
digs.reverse()
return ''.join(digs)
有沒有簡單的方法可以將它們轉換為二進制文件,或者有更好的方法一起使用?
這是一個應在Python 2.6(或更高版本)上運行的版本:
>>> data = ['\x12', '\x13', '\x05', '\xF2']
>>> [bin(ord(c))[2:].zfill(8) for c in data]
['00010010', '00010011', '00000101', '11110010']
因此,要將其寫入文件,我可能會執行以下操作:
f = open('some_file', 'w')
f.write('\n'.join(bin(ord(c))[2:].zfill(8) for c in data))
f.close()
編輯:沒意識到bin()
在Python 2.5上不可用,您可以定義以下bin()
函數來使其工作:
def bin(i):
s = []
prefix = '0b' if i >= 0 else '-0b'
if i < 0: i = -i
while i:
s.append('1' if i & 1 else '0')
i = i >> 1
return prefix + (''.join(reversed(s)) if s else '0')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.