我正在生成一个二进制文件。我用hexdump打开它,它看起来如下所示 enter image description here
但是当我尝试在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。
答案 0 :(得分:1)
您可以看到文件中的前10个字节(或图像中显示的所有字节)都是0x00
或0x01
。在ASCII中,这些都是不可打印的字符,因此如果您尝试将print
字符串作为字符串,您将无法看到任何内容 - 但会读取字节数。使用repr
打印它是有效的,因为repr
为您提供了对象"的字符串表示形式,因此您可以看到其中的实际字节。
根据建议,只需执行data = file.read(1023)
即可从文件中读取1023个字节的块。
注意:在Python 3中,这有点不那么令人困惑,其中从二进制文件读取的数据作为bytes
对象返回,str
是具有解码字符串表示的不同类型。在这种情况下,打印data
将显示类似于您从Python中repr
得到的内容,因为bytes
对象不会被假定为代表文本,因此即使是显示其内容也是首选它包含不可打印的字符。