在Python中,如何将.exe文件转换为1和0的字符串?

在Python中,如何将.exe文件转换为1和0的字符串?,python,binary,Python,Binary,我似乎能够找到关于如何在C#中执行此操作的信息,但没有找到关于如何在Python中执行相同操作的信息 如有任何意见或建议,将不胜感激。多谢各位 ''.join((map(''.join, itertools.product(*['01']*8))[ord(c)] for c in open('foo').read())) 使用填充进行更新: print "".join(("00000000"+bin(ord(c))[2:])[:8] for c in file("a.exe"

我似乎能够找到关于如何在C#中执行此操作的信息,但没有找到关于如何在Python中执行相同操作的信息

如有任何意见或建议,将不胜感激。多谢各位

''.join((map(''.join, itertools.product(*['01']*8))[ord(c)]
         for c in open('foo').read()))
使用填充进行更新:

print "".join(("00000000"+bin(ord(c))[2:])[:8] for c in file("a.exe", "rb").read())
使用填充进行更新:

print "".join(("00000000"+bin(ord(c))[2:])[:8] for c in file("a.exe", "rb").read())

使用带有“rb”标志的
open
。这将以二进制模式读取文件

使用带有“rb”标志的
打开
。这将以二进制模式读取文件

这当然适用于任何类型的文件,而不仅仅是exe文件。还是要提取exe文件的特定部分?这当然适用于任何类型的文件,而不仅仅是exe文件。或者您想提取exe文件的特定部分吗?为什么要用
文件
而不是
打开
?您必须将二进制表示填充为8位。@F.C:问得好。为了回答这个问题,我发现并学到了一些新的东西:)为什么
file
而不是
open
?您必须将二进制表示填充为8位。@F.C:问得好。为了回答这个问题,我发现并学到了一些新的东西:)我完全忘记了
bin
,我无法抗拒简洁和不可读。事实上,在这种情况下,查找表也不会那么糟糕。但是,如果您为文件中的每个字符重新计算该表,则会很糟糕。;)我完全忘记了
bin
,我无法抗拒简洁和不可读。实际上,在这种情况下,查找表不会那么糟糕。但是,如果您为文件中的每个字符重新计算该表,则会很糟糕。;)
def padded_bin(number, width=8, padchar='0'):
    return bin(number)[2:].rjust(width, padchar)

with open(r'C:\path\to\file.txt', 'rb') as f:
    as_binary = ''.join(padded_bin(ord(c)) for c in f.read())