2024-05-16 00:30:18 发布
网友
我正在生成一个二进制文件。我用hexdump打开的,如下所示 enter image description here
但是当我试图在python中使用 file = open("lfsr.bin","rb") data = file.read(10) print data
file = open("lfsr.bin","rb") data = file.read(10) print data
正在打印空白/空白 但如果我这么做的话
print repr(data)
它印出来了
我怎么能把这个文件分成1023块来读?这个文件实际上是PRN生成器代码的一个o/p。在
正如您可以看到的那样,文件中的前10个字节(或者从图像中看,所有字节)要么是0x00或{}。在ASCII中,这些都是不可打印的字符,因此,如果您试图将它们print作为字符串,您将看不到任何内容,但是字节是被读取的。用repr打印它是因为repr提供了一个“对象的字符串表示”,因此可以看到其中的实际字节。在
0x00
print
repr
按照建议,只需data = file.read(1023)从文件中读取1023字节的块。在
data = file.read(1023)
注意:在python3中,这一点变得不那么容易混淆,在python3中,从二进制文件读取的数据将作为bytes对象返回,而{}是一种具有解码字符串表示的不同类型。在这种情况下,打印data将显示类似于在Python中从repr获得的内容,因为bytes对象不被假定为表示文本,因此即使包含不可打印的字符,也最好显示它们的内容。在
bytes
data
正如您可以看到的那样,文件中的前10个字节(或者从图像中看,所有字节)要么是}。在ASCII中,这些都是不可打印的字符,因此,如果您试图将它们
0x00
或{print
作为字符串,您将看不到任何内容,但是字节是被读取的。用repr
打印它是因为repr
提供了一个“对象的字符串表示”,因此可以看到其中的实际字节。在按照建议,只需
data = file.read(1023)
从文件中读取1023字节的块。在注意:在python3中,这一点变得不那么容易混淆,在python3中,从二进制文件读取的数据将作为}是一种具有解码字符串表示的不同类型。在这种情况下,打印
bytes
对象返回,而{data
将显示类似于在Python中从repr
获得的内容,因为bytes
对象不被假定为表示文本,因此即使包含不可打印的字符,也最好显示它们的内容。在相关问题 更多 >
编程相关推荐