2013-06-27 2 views
2

У меня есть следующая строка:Python создать массив из шестигранного байта

"0c a8 f0 d6 02 00 00 00 00 d0 1c d1 10 d2 00 d3 00 d7 01 d4 78 20 ff" 

Как вы можете видеть, он содержит шестнадцатеричные значения, и я хочу, чтобы преобразовать его в массив байт, используя Python 2.4.4 (НЕ 3.x, поэтому у меня нет полезного bytearray). Единственный способ добиться этого, насколько мне известно, - это что-то вроде:

i = [] 
i.append(0x0c) 
i.append(0xa8) 
i.append(0xf0) # ... and so on 
..... 
z = ''.join(chr(c) for c in i) 

Но это ужасно. Любой хороший намек на то, как эффективно решить эту проблему?

ответ

3
'0c a8 f0 d6 02 00 00 00 00 d0 1c d1 10 d2 00 d3 00 d7 01 d4 78 20 ff'.replace(' ', '').decode('hex') 
1

Вы можете расшифровать строку, заменив все пробельные

s = "0c a8 f0 d6 02 00 00 00 00 d0 1c d1 10 d2 00 d3 00 d7 01 d4 78 20 ff" 
x = s.replace(" ", "").decode('hex') 

или Вы можете использовать заявление генератора, например

x = ''.join(chr(int(i, 16)) for i in s.split())