You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将输入数值转换为32位十六进制值并拆分得到单字节十六进制列表

实现方案

错误原因

  • struct.pack方法要求传入整数参数,你传入了格式化得到的十六进制字符串,类型不匹配导致报错
  • 你使用的<H格式符仅对应2字节小端无符号整数,既无法满足32位(4字节)的转换需求,小端序的输出顺序也和你预期的[0x0,0x0,0x0,0xA]不符

推荐实现(基于struct)

直接使用原始整数作为struct.pack的入参,选择大端序32位无符号整数格式符>I即可:

import struct

myNum = 10
# 大端序打包为4字节32位无符号整数
packed_bytes = struct.pack('>I', myNum)
# 转换为整数列表
myList = list(packed_bytes)
print(myList) # 输出 [0, 0, 0, 10],等价于你要的[0x0,0x0,0x0,0xA]

注:Python中整数的十进制表示和十六进制表示完全等价,10与0xA是同一个值,若需要显示为十六进制格式,可单独对列表元素做格式化输出。

可选实现(基于字符串分割)

如果需要先处理十六进制字符串再拆分,也可以用以下方法:

myNum = 10
# 转换为8位补零的十六进制字符串,去掉0x前缀
hex_str = f"{myNum:08X}"
# 每两位分割后转十六进制整数
myList = [int(hex_str[i:i+2], 16) for i in range(0, 8, 2)]

内容的提问来源于stack exchange,提问作者gogogo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:06:01