Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python十六进制文件写入_Python_File_Binary_Hex - Fatal编程技术网

Python十六进制文件写入

Python十六进制文件写入,python,file,binary,hex,Python,File,Binary,Hex,我有一个如下列表: ['\x12', '\x13', '\x05', ... , '\xF2'] 我正试图将它以二进制形式写入一个文件,如下所示: 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() 这就是我现在正在做的: for dataLine in readData:

我有一个如下列表:

['\x12', '\x13', '\x05', ... , '\xF2'] 
我正试图将它以二进制形式写入一个文件,如下所示:

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()
这就是我现在正在做的:

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(或更高版本)上运行的版本:

因此,要将其写入文件,我可能会执行以下操作:

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()
Edit:没有意识到Python 2.5上没有
bin()
,您可以定义以下
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')
def箱(一):
s=[]
如果i>=0,则前缀='0b'-0b'
如果i<0:i=-i
而我:
s、 追加('1'如果i&1其他'0')
i=i>>1
返回前缀+(“”.join(如果s为“0”),则反向)

我认为2.5版中没有bin。。。我得到了一个没有定义的名字,比如说:“2.6版中的新版本。”但是因为OP没有指定2.5作为要求,所以可能更容易更改答案,所以我会这么做。我可以发誓我提到了——我的错误。谢谢你的回复!