我有十六進制字符串,例如'01ff6fee32785e366f710df10cc542B4',我試圖通過2個字符[1,255,...]將它們(高效)轉換爲int數組2個字符。如何將十六進制轉換爲int數組
我試圖
c = '8db6796fee32785e366f710df10cc542B4'
c2=[int(x,16) for x in c]
但是隻需要人物一個接一個。 我可以做到這一點,而不使用循環(我可能是錯的,但如果認爲它會更慢)?
我有十六進制字符串,例如'01ff6fee32785e366f710df10cc542B4',我試圖通過2個字符[1,255,...]將它們(高效)轉換爲int數組2個字符。如何將十六進制轉換爲int數組
我試圖
c = '8db6796fee32785e366f710df10cc542B4'
c2=[int(x,16) for x in c]
但是隻需要人物一個接一個。 我可以做到這一點,而不使用循環(我可能是錯的,但如果認爲它會更慢)?
你可以range(..)
在長度爲2的字符串:
c = '8db6796fee32785e366f710df10cc'
c2=[int(c[i:i+2],16) for i in range(0,len(c),2)]
所以i
用2步的字符串進行迭代,並且你把長2從i
到i+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]
的最後一個元素是12
因爲你的字符串的長度爲奇數,所以它需要c
作爲解析的最後一個元素。
這似乎很好,謝謝! – Grimsovitch
>>> c = '8db6796fee32785e366f710df10c'
>>> [int(x) for x in bytearray.fromhex(c)]
[141, 182, 121, 111, 238, 50, 120, 94, 54, 111, 113, 13, 241, 12]
>>> list(map(int, bytearray.fromhex(c)))
[141, 182, 121, 111, 238, 50, 120, 94, 54, 111, 113, 13, 241, 12]
兩個相對簡單的解決方案,但如果字符串有奇數個字符,可能會或可能不是您想要的,這些錯誤會出錯。
這是整個十六進制數? –
是的它的長度是32個字符 – Grimsovitch
你的第一個例子'01ff6fee32785e366f710df10cc'是27個字符! – cdarke