0

我正在生成一个二进制文件。我使用 hexdump 打开它,如下所示 在此处输入图像描述

但是当我尝试在 python 中读取这个文件时 file = open("lfsr.bin","rb") data = file.read(10) print data

它打印空白/空但如果我这样做

print repr(data)

它打印

'\x00\x00\x00\x00\x01\x00\x01\x01\x01\x01'

如何以 1023 块读取此文件?该文件实际上是 PRN 生成器代码的 o/p。

4

1 回答 1

1

如您所见,文件中的前 10 个字节(或所有字节,从图像中看起来)要么是0x00要么0x01. 在ASCII中,这些都是不可打印的字符,因此如果您尝试将print它们作为字符串使用,您将看不到任何内容 - 但会读取字节。用作品打印它,repr因为repr给你一个“对象的字符串表示”,所以你可以在那里看到实际的字节。

正如建议的那样,只需data = file.read(1023)从文件中读取一个 1023 字节的块。

注意:这在 Python 3 中变得不那么令人困惑了,从二进制文件中读取的数据作为bytes对象返回,并且str是具有解码字符串表示的不同类型。在这种情况下,打印data将显示类似于您repr在 Python 中获得的内容,因为bytes不假定对象表示文本,因此即使它包含不可打印的字符,也最好显示它们的内容。

于 2018-02-28T14:54:11.353 回答