我正在尝试以二进制模式打开一个文件,以便我可以在位级别操作它。
我正在尝试获取二进制信息:
with open('file.txt', 'rb') as f:
data = f.read()
但是当我试着打印出来的时候,我得到了一个十六进制和一些奇怪的(对我来说)字符的混合物,就像下面的
...~xebxdd{xdfxbaxf7^xf7xeexbdxd7...
如何获得二进制信息为0和1,并能够将0110 1001更改为1001 0110
二进制数据只是数字。更重要的是,Python对boolean
或byte
的处理方式与int
相同。使用BytesIO
将允许您以数字流的形式访问文件,每个数字流代表一个字节。
输入以2为基数的数字,使用0b00000000
语法。使用"{:08b}".format(number)
查看号码。要将0b01101001
改为0b10010110
,请使用~0b01101001 & 0xFF
。~
运算符翻转位,而& 0xFF
只是一个掩码,将int
中剩余的24位归零。(这是必要的,因为我们翻转了所有32位,所有前面的0现在都是1,我们根本不希望这样)。