我有一个二进制文件,当我在python中打开它时,数据看起来像这样:
b'\x00\x20\x00\x2A\x02\x01'
数据成对显示。在上面的示例中,有3对(\x00\x20 \x00\x2A \x02\x01
)。我想更改输入文件,然后将其写入二进制文件。更改如下:
在每对中,如果第一项为0,则第二项将在输出文件中。如果第一项为1,则前一对中的第二项将在输出文件中。如果第一个项目大于1,那么它将更加复杂。这将取决于同一对中的2个项目。例如,如果第一个项目为2,第二个项目为1,则要获取输出编号,程序将在输出中返回2个项目,并将该项目用作输出。
example2:如果第一个项目是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])