python操纵单个数据位

时间:2015-07-25 06:30:31

标签: python binary-data

我正在尝试以二进制模式打开文件,以便我可以在某个位置操作它。

我试图通过以下方式获取二进制信息:

with open('file.txt', 'rb') as f:
    data = f.read()

但是当我尝试将其打印出来时,我会得到一个十六进制和一些奇怪(对我而言)的混合字符,如下所示

...~\xeb\xdd{\xdf\xba\xf7^\xf7\xee\xbd\xd7\...

如何获取0和1的二进制信息,并能将0110 1001更改为1001 0110

1 个答案:

答案 0 :(得分:0)

二进制数据只是数字。更重要的是,Python几乎以boolean的方式处理byteint。使用BytesIO将允许您以数字流的形式访问文件,每个数字代表一个字节。

要在基数2中输入数字,请使用0b00000000语法。要以相同方式查看号码,请使用"{:08b}".format(number)。要将0b01101001更改为0b10010110,请使用~0b01101001 & 0xFF~运算符翻转这些位,而& 0xFF只是一个掩码,将int的剩余24位归零。 (这是必要的,因为因为我们翻了所有32位,所有那些前导0现在都是1,我们根本不需要它。)