我有一个以奇怪模式编码的文件。例如,
字符(1字节)|整数(4个字节)|双(8字节)|等...
到目前为止,我编写了下面的代码,但我还没弄清楚为什么仍然在屏幕上显示垃圾。任何帮助将不胜感激。
BRK_File = 'commands.BRK'
input = open(BRK_File, "rb")
rev = input.read(1)
filesize = input.read(4)
highpoint = input.read(8)
which = input.read(1)
print 'Revision: ', rev
print 'File size: ', filesize
print 'High point: ', highpoint
print 'Which: ', which
while True
opcode = input.read(1)
print 'Opcode: ', opcode
if opcode = 120:
break
elif
#other opcodes
答案 0 :(得分:6)
read()
返回一个字符串,您需要解码才能获取二进制数据。您可以使用struct
模块进行解码。
以下几行应该可以解决这个问题:
import struct
...
fmt = 'cid' # char, int, double
data = input.read(struct.calcsize(fmt))
rev, filesize, highpoint = struct.unpack(fmt, data)
您可能需要处理字节序问题,但struct
会使pretty easy。
答案 1 :(得分:0)
显示文件的内容以及它输出的“垃圾”会很有帮助。
input.read()返回一个字符串,因此您必须将正在阅读的内容转换为所需的类型。我建议查看struct模块。