2013-02-08 2 views
4

Я хочу преобразовать строку, подобную этой, в int: s = 'A0 00 00 00 63'. Какой самый простой/лучший способ сделать это?Строка байтов в int

Например, '20 01' должно быть 8193 (2 * 16^3 + 1 * 16^0 = 8193).

ответ

12

Используйте int() либо str.split():

In [31]: s='20 01' 

In [32]: int("".join(s.split()),16) 
Out[32]: 8193 

или str.replace() и передать базу как 16:

In [34]: int(s.replace(" ",""),16) 
Out[34]: 8193 

Здесь и split() и replace() преобразовании '20 01' в '2001':

In [35]: '20 01'.replace(" ","") 
Out[35]: '2001' 

In [36]: "".join('20 01'.split()) 
Out[36]: '2001' 
0
>>> s = 'A0 00 00 00 63' 
>>> s = s.replace(" ","") 
>>> print s 
A000000063 
>>> for i in xrange(0,len(s),4): 
     print int(s[i:i+3],16) 

2560 
0 
99 
Смежные вопросы