如何获取文件的二进制(1010)

how to get Binary (1010) of a file

我需要获取文件的纯二进制文件。从纯二进制我的意思是

1010101010

我试过这个:

with open('img.jpg', 'rb') as file:
    print(file.read())

这给了我以下输出:

d2$I\xa7\xf3\x196\x8d\xc8\x9cmS\xc7Z{L\xd8r\x89\x85\x1f\xf2\xd3\x07\x8fjd\x90\xa6P\x03\xb0\x1e\xb5,n\xb0\xafo~\xf4\x

我不需要这个,因为我正在处理文件的二进制文件。相反,我需要

101011110101010110101000000001010101011111010000011010010101
with open('img.jpg', 'rb') as file:
    print("".join(bin(b)[2:] for b in file.read()))

为什么你需要这个超出我的理解,因为计算机工作在 1s 和 0s,而不是 "1"s 和 "0"s,而且通常是向人类表示二进制文件,您将使用 octal 或 hexidecimal.

所以,这实际上是一回事。 \xa7 形式的字符被文件阅读器理解为表示 10100111.

>>> bin(ord('\xa7')) # => 167

如果你想要二进制表示,特别是 0s 和 1s,你可以使用类似于我上面使用的东西来获得它,但是任何需要二进制的程序都应该使用实际的二进制字符,通过 python.

在屏幕上打印时看起来像 \xa7 或其他东西