繁体   English   中英

如何将整数的python列表转换为十六进制列表,得到列表错误“ struct.error:必需的参数不是整数”

[英]How to convert python list of interger to list of hex, getting List error “struct.error: required argument is not an integer”

我有一个列表,该列表是a=[0,1] ,我想使用a=[0x00,0x001]类型进行更改。 我怎样才能做到这一点? 我这样尝试

print (struct.pack('>h',a))

但是我不能换成十六进制

直接使用十六进制应该可以:

>>> a = [0,1]
>>> a = [hex(i) for i in a]
>>> a
['0x0', '0x1']

使用hex(...)仅会给您最少的前导0:

print( [hex(i) for i in [0,1]])  #  ['0x1', '0x2']

您可以将字符串格式化为十六进制, 并将所需的零数量设置为zfill() ,并在其前面加上'0x'

data = [0,1]

as_hex = [ "0x" + format(e,"x").zfill(2) for e in data]

print(as_hex)

输出:

['0x00', '0x01']

由于您无法描述所需的结果,因此我只能猜测:

  1. 您是否要将一些数字打包到字符串中?

    然后,无论使用哪种格式都没关系,只要使用正确的格式字符串,两者都应该可以工作:

     a = [1, 2] b = [0x01, 0x02] struct.pack(">hh", *a) # > '\\x00\\x01\\x00\\x02' struct.pack(">hh", *b) # > '\\x00\\x01\\x00\\x02' 

    这是因为ab相等:写12还是偏好0x01都没关系。 0x02 请注意,显示的字符串仅是包含特殊字符的字符串的表示,这些特殊字符的值分别为0、1和2。

  2. 是否要以十六进制表示形式输出数字?

    在这种情况下,请参阅其他答案。

下面是将整数列表转换为十六进制列表的另一种方法

a = [0,1]
b = map(hex, a) 
# or 
b = map(lambda x:hex(x), a)
# output
print b
['0x1', '0x2']

下面是使用map函数将整数列表转换为十六进制列表的另一种方法:

a=[0,1]
print(map(hex,a))
# Output
# ['0x0', '0x1']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM