如何编写返回十六进制数列表的Python函数?
解决方法
你需要的[0x18, 0x82, ...]本质是整数列表,0x开头只是Python中整数的十六进制表示方式,hex()返回的是字符串形式的十六进制描述,完全没必要用它来生成这个列表。以下是几种实现方式:
直接生成目标列表
如果已经明确要生成的十六进制值,直接把它们以十六进制整数的形式写入函数即可:
def get_hex_list(): return [ 0x18, 0x82, 0x19, 0x89, 0x91, 0x71, 0x38, 0x58, 0x10, 0x47, 0x89, 0x65, 0x86, 0x75, 0x26, 0x58, 0x66, 0x44, 0x74, 0x72, 0x47, 0x11, 0x13, 0x30, 0x46, 0x13, 0x58, 0x28, 0x81, 0x55, 0x61, 0x23 ]
调用这个函数后,得到的变量就是你需要的列表,里面的元素都是整数,Python会根据上下文自动以十六进制或十进制显示,但本质完全一致,不影响后续使用。
从其他格式转换生成
如果需要从十进制列表或十六进制字符串列表转换:
- 十进制列表转目标列表
def dec_to_hex_list(dec_list): return [num for num in dec_list]
比如传入你的列表对应的十进制值[24, 130, 25, 137, ...],返回的就是等价的整数列表,用十六进制表示就是你要的形式。
- 十六进制字符串列表转目标列表
如果你的原始数据是["18", "82", "19", ...]这种字符串形式,可以用int()函数指定进制转换:
def str_to_hex_list(str_hex_list): return [int(s, 16) for s in str_hex_list]
调用示例:str_to_hex_list(["18", "82", "19"])会返回[0x18, 0x82, 0x19]。
误区说明
hex()函数的作用是将整数转换为十六进制字符串(比如hex(24)返回"0x18"),这和你需要的整数列表完全是两回事,所以不需要用它来实现需求。
内容的提问来源于stack exchange,提问作者glasshope
相关产品推荐
相关产品推荐

