如何在 Python 中打开和呈现原始二进制数据?

X-M*_*ann 5 python binary-data python-3.x

这似乎是应该有很多重复和大量答案的问题类型,但我的搜索只导致沮丧,没有可用的解决方案。

在 Python(最好是 3.x)中,我想知道如何打开任意类型的文件,读取存储在磁盘上的字节,并以最“原生”、“原始”、“ raw' 形式,在对它们进行任何编码之前。

如果文件作为流存储在磁盘上,00010100 10000100 ...那么这就是我希望在屏幕上显示的内容。

这类问题通常会引起“您为什么想知道”和“用例是什么”的回答。我很好奇,这是我的用例。

在将其标记为重复之前,请确保您想到的答案确实回答了问题(而不仅仅是讨论编码等)。谢谢!

前三个答案后编辑:

感谢到目前为止的三位响应者,特别感谢 JF Sebastian 进行的扩展讨论。从所说的内容看来,我的问题归结为文件中的字节如何物理记录到磁盘以及如何读取和呈现它们。在这一点上,在 Python 中似乎不可能以原始形式获得字节的视图,但它们有各种表示形式;整数、十六进制值、ascii 等。由于问题尚未解决,我将保留问题以供更多输入。

Kla*_* D. 1

Python 3 将文件数据表示为bytes. 该类型基本上是从 0 到 255 的整数列表,因此是字节列表。它们有一些方便的方法(例如解码为字符串),并且在打印时呈现类似于字符串。

要获得逐位表示,应b在打开文件时使用该模式。

bin()将帮助您将整数转换为二进制表示形式。但您可能必须删除前两个字符并用 s 填充0

with open(filename, 'rb') as my_file:
    my_bytes = my_file.read()
    bin_list = [bin(i)[2:].rjust(8, '0') for i in my_bytes]
    print(' '.join(bin_list))
Run Code Online (Sandbox Code Playgroud)