簡體   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