协助Python 3,十六进制和添加

时间:2016-06-10 11:55:33

标签: python binary hex

第一次使用python应用程序,当然这并不容易;)用简单的英语,这就是我想要做的事情:

  

读取二进制文件,如果有任何字节为0x00,则将其更改为0xFF,否则将0x01添加到每个字节并写入新文件。

所以它就是......我的希望就像是

  

./ convert.py file1.bin file2.bin

这是我到目前为止所拥有的:

#!/usr/bin/env python3
import sys
with open(sys.argv[1], "rb") as f:
        byte = f.read(1)
        while byte:
                # Do stuff with byte.
                if byte = b'\x00'
                        byte = b'\xFF'
                else
                        byte = byte + b'\x01'
                byte = f.read(1)

但是到目前为止我所拥有的一切......显然这是非常破碎的。我认为这将是一个很好的学习机会...感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

首先,if byte = b'\x00'行中有一个错误,您的意思是==。这是软件开发中最危险的错误之一,这就是为什么python不允许在条件内进行赋值的原因。 其次,更好地检查字节长度,因为python从文件中读取字节作为bytes的列表。因此,在文件的末尾,您将获得一个bytes的空列表。

现在代码:

#!/usr/bin/env python3
import sys

with open(sys.argv[1], "rb") as fin, open(sys.argv[2], "wb") as fout:
        byte = fin.read(1)
        while len(byte):
                # Do stuff with byte.
                if byte == b'\x00'
                        byte = b'\xFF'
                else
                        byte = bytes((ord(byte) - 1,))
                fout.write(byte)
                byte = fin.read(1)