如何在Python中将小端格式的数据存储在二进制文件中

问题描述 投票:0回答:1

我有一个二进制文件。我想在 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”。但我想以小端格式写入数据。

请帮我修复它。

python file binaryfiles endianness binascii
1个回答
0
投票

您需要使用 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

当然,您需要将十六进制字符串转换为长数字。您可以反转十六进制字符串,但我认为这很容易出错。

© www.soinside.com 2019 - 2024. All rights reserved.