【发布时间】:2019-05-22 20:26:36
【问题描述】:
我有一个二进制文件,当我在 python 中解析它时,内容将如下所示:
b'\x00\x20\x00\x2A\x02\x01'
数据是成对出现的,实际上字符串将被表示为字节数组。我将有效地处理二进制数据。在上述示例中,有 3 对 (\x00\x20 \x00\x2A \x02\x01)。我想更改输入文件,然后将其写入二进制文件。变化如下:
在每一对中,如果第一项为 0,则第二项将在输出文件中。如果第一项是 1,则前一对中的第二项将在输出文件中。如果第一项大于 1,那么它会更复杂。这将取决于同一对中的 2 个项目。例如 1,如果第 1 项是 2,而第 2 项是 1,为了得到输出的数字,程序在输出中返回 2 项并将该项用作输出。
示例 2:如果第一项是 2,第二项是 2,为了得到输出的数字,程序在输出中返回 2 项,并使用该项加上之后的 1 项作为输出。
这是预期的输出:
b'\x20\x2A\x20'
我尝试在 python 中使用以下代码:
data = b'\x00\x20\x00\x2A\x02\x01'
out = bytearray()
for i in range(len(data)):
if i % 2 !=0:
if data[i] ==0:
out.append(data[i+1])
elif data[i] ==1:
out.append(data[i-1])
elif data[i] >1:
n = data[i]
for j in range(n):
out.append(n[0:j])
但它没有返回预期的输出。因为我在处理二进制文件方面很陌生,你能帮我解决它吗?或者给我一些提示来获得这样的输出?
【问题讨论】:
-
如果你能展示你期望的输出和你得到的结果会很好。
-
回溯(最近一次调用最后):文件“
”,第 10 行,在 类型错误:'int' 对象不可下标
标签: python