python 操纵单个数据位

python manipulating single bits of 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

二进制数据就是数字。更重要的是,Python 对待 booleanbyte 的方式几乎与 int 相同。使用 BytesIO 将让您以数字流的形式访问文件,每个数字代表一个字节。

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