0

ファイルを読み取り、読み取ったデータを16進値のリストに変換する単純なpythonモジュールを作成しました。次に、各値を 1 ずつインクリメントしました。この 16 進値のリストを新しいファイルに書き込む方法を考えていました。

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

バイトを16進数の文字列として保存しています。あなたはそれを行うことができますが、それはすでに結果を整数としてあなたに与えています. リストに変換したいかもしれませんが、整数のままにしておいてください。リストに変換した後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 に答える