如何将十六进制str转换为int数组

1 python arrays hex

我有十六进制字符串,例如 '01ff6fee32785e366f710df10cc542B4',我试图将它们(有效地)转换为 2 个字符乘 2 个字符的 int 数组,例如 [1,255,...]。

我试过

c = '8db6796fee32785e366f710df10cc542B4' 
c2=[int(x,16) for x in c]
Run Code Online (Sandbox Code Playgroud)

但它只需要一个一个的字符。我可以不使用 for 循环来做到这一点吗(我可能是错的,但如果认为它会更慢)?

Wil*_*sem 5

你可以range(..)超过长度为 2 的子串:

c = '8db6796fee32785e366f710df10cc' 
c2=[int(c[i:i+2],16) for i in range(0,len(c),2)]
Run Code Online (Sandbox Code Playgroud)

因此,i以 2 的步长迭代字符串,并使用 到 到ii+2不包括)获取长度为 2 的子字符串c[i:i+2]。您可以通过将这些进行转换int(..,16)

对于您的示例输入,它会生成:

>>> c='8db6796fee32785e366f710df10cc'
>>> [int(c[i:i+2],16) for i in range(0,len(c),2)]
[141, 182, 121, 111, 238, 50, 120, 94, 54, 111, 113, 13, 241, 12, 12]
Run Code Online (Sandbox Code Playgroud)

最后一个元素是12因为你的字符串长度是奇数,所以它c作为最后一个元素来解析。