0

我编写了一个简单的 python 模块,它读取文件并将读取的数据转换为十六进制值列表。然后我将每个值增加 1。我想知道如何将这个十六进制值列表写入新文件。

使用 python 3.x

代码:

inFilePath = input("Input File: ")
inFile = open(inFilePath, "rb")
data = inFile.read()
hexVals = []
for byte in data:
    hexVals.append(hex(byte))
print("File Read")
print("Original Data: " + str(hexVals))
for x in range(hexVals.__len__()):
    hexVals[x] = hex(int(hexVals[x], 16) + 1)
print("Altered Data: " + str(hexVals))
outFilePath = input("Output File: ")
outFile = open(outFilePath, "wb")
outFile.write(???)
4

2 回答 2

0

您将字节存储为十六进制字符串。您可以这样做,但它已经将结果作为整数提供给您。只需将其保留为整数,尽管您可能希望将其转换为列表。将其转换为列表后,您可以通过bytes一种相当简单的方式将其转换回列表。例如:

with open('input', 'rb') as f:
    data = f.read()
data = list(data)
data = [byte + 1 for byte in data]
data = bytes(data)
# If this is all you're going to do, you could just do this:
# data = bytes((byte + 1) % 256 for byte in data)
with open('output', 'wb') as f:
    f.write(data)
于 2013-01-13T01:32:32.143 回答
0

您快到了!这会奏效。

outFile.write('\n'.join(hexVals))
outFile.close()

不要忘记关闭输入文件,或者使用withicktoofay 建议的语法。

于 2013-01-13T01:32:40.417 回答