我知道我能做到:
byte = 58
format ( byte , '08b' )
>>> '00111010'
有两个字节我必须做的format( bytes , '016b')
但是如果我没有字节数,我就不能为格式设置一个数字,所以我必须这样做:
with open('file','rb')as a:
b = a.read()
c = int.from_bytes ( b )
d = format( c ,'b')
d = (8-len(a)%8)*'0'+d
但我想知道是否有更简单的方法来做到这一点,我希望这不使用任何循环
谢谢!
4条答案
按热度按时间eqqqjvef1#
您可以使用
str.format
方法将每个字节Map到8位表示形式,然后将字节表示形式连接到单个字符串中以进行输出(其中b
是从文件中读取的bytes对象):dbf7pr2w2#
看起来好像您希望将整个文件内容打印为位字符串。
如果是这样,您可以这样做:
或者...
。。。这样会占用更少的内存
或者...
。。。这避免了显式循环,冒着使用过多内存的风险
mhd8tkvw3#
你可以使用系统。getsizeof()
或
如果不管用
pgccezyw4#
由于Map没有被优化,因此,我建议使用我刚才使用的方法。