【发布时间】:2021-11-28 05:47:48
【问题描述】:
我将十六进制转换为十进制,但结果是大端,我需要小端(例如 1500 = 21,而不是我得到的 5376)。我尝试使用 struct 函数,但遇到了一些问题:
u16ModuleID_hex = str(f3.read(4))
ba = bytearray.fromhex(u16ModuleID_hex)
ba.reverse()
u16ModuleID_dec = struct.unpack("<h", ba)
错误:在位置 1 的 fromhex() arg 中找到非十六进制数
所以,我补充说:ba = bytearray.fromhex(u16ModuleID_hex[0][2:])
错误:struct.error: unpack 需要 2 个字节的缓冲区
u16ModuleID_hex 是例如 b'10b5'。我假设它的前面有 b' 和数据类型。
【问题讨论】:
-
这能回答你的问题吗? How to byte-swap a 32-bit integer in python?
-
不是真的:/ 也许我可以尝试将 int 从大端转换为小端?
标签: python endianness