从python3中的二进制文件编码字节数据类型

时间:2019-05-19 11:27:15

标签: python-3.x binary

我有一个二进制文件,当我在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])

0 个答案:

没有答案