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

时间:2018-10-30 08:23:19

标签: python list

我有一个double列表,我想更改为a=[0,1]类型。我怎样才能做到这一点?我尝试过

a=[0x00,0x001]

但是我不能更改为十六进制

5 个答案:

答案 0 :(得分:2)

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

spread

答案 1 :(得分:2)

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

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

您可以format(...)字符串为十六进制,zfill()所需数量的零,并在自己之前加上'0x'

data = [0,1]

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

print(as_hex)

输出:

['0x00', '0x01']

答案 2 :(得分:1)

由于您无法描述您想要的结果是什么,我只能猜测:

  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. 是否要以十六进制表示形式输出数字?

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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