2017-01-31 24 views
1

Я имею строку из четырех чисел hex как:Python: преобразование строки из нескольких шестнадцатеричных значений в целое

"0x00 0x01 0x13 0x00" 

что эквивалентно 0x00011300. Как я могу преобразовать это шестнадцатеричное значение в целое?

+0

Возможный дубликат [Как получить шестнадцатеричную строку из целого числа со знаком] (http://stackoverflow.com/questions/228702/how-to-get-hex-string-from-signed-integer) – Danieboy

ответ

3

Поскольку у вас есть строка значений hex. Вы можете удалить ' 0x' из строки, чтобы получить единственную шестнадцатеричную строку. Например:

my_str = "0x00 0x01 0x13 0x00" 
hex_str = my_str.replace(' 0x', '') 

где значение удержания на hex_str будет:

'0x00011300' # `hex` string 

Теперь вы можете конвертировать hex строку int как:

>>> int(hex_str, 16) 
70400 
0

Ответ находится здесь Convert hex string to int in Python.

Без 0x префикса, необходимо указать базу в явном виде, в противном случае нет никакого способа, чтобы сказать:

x = int("deadbeef", 16) 

С 0x префикс, Python можно выделить шестигранные и десятичной автоматически.

print int("0xdeadbeef", 0) 
3735928559 

print int("10", 0) 
10 

(Вы должны указать 0 в качестве основания для того, чтобы ссылаться на этот префикс угадать поведение, опуская второй параметр означает считать базу-10 Смотрите комментарии для более подробной информации..)

1
>>> s="0x00 0x01 0x13 0x00" 
>>> a=0 
>>> for b in s.split(): 
... a = a*256 + int(b,16) 
... 
>>> a 
70400 
>>> hex(a) 
'0x11300'