我有一个二进制文件。我想在 python 代码中从终端读取十六进制数据。我正在执行程序如下: python hello.py“2DB6C”“CDEF”
“2DB6C”:-(十六进制地址)表示temp.bin文件中的GoTo地址<2DB6C>,我要开始写入数据的地方。
“CDEF”:- 要写入二进制文件的数据。请记住数据以十六进制格式给出。
我想以小端格式写入数据。但这对我不起作用。
file = open("temp.bin", "r+b")
file.seek(4)
datatomodify = "CDEF"
data = binascii.unhexlify(datatomodify)
print ("data :", data, "offset addr :", hex(file.tell()))
file.write(data)
print ("after writing addr :", hex(file.tell()))
file.close()
在文件中写入“CDEF”。但我想以小端格式写入数据。
请帮我修复它。
您需要使用 struct 包。假设你的两个数字是 4 字节的无符号长整型:
from struct import *
# data will contain a binary message packed with two Long (4 bytes)
data = pack('<LL', 1, 2) # < little endian
# L first long of value 1
# L second long of value 2
# 0100000002000000
当然,您需要将十六进制字符串转换为长数字。您可以反转十六进制字符串,但我认为这很容易出错。