преобразование строки в hex в python

У меня есть скрипт, который вызывает функцию, которая принимает шестнадцатеричное число в качестве аргумента. Аргумент должен на префикс 0x. Источник данных является таблицей базы данных и хранится в виде строки, поэтому он возвращается "0x77". Я ищу способ взять строку из базы данных и использовать ее в качестве аргумента в шестнадцатеричной форме с префиксом 0x.

это работает:

addr = 0x77
value = class.function(addr)

запись базы данных должна быть строкой, так как большинство других записей не имеют шестнадцатеричных значений в этой колонке, но значения могут быть изменены, чтобы сделать его проще, поэтому вместо 0x77, это может быть '119'.

3 ответов


код class.function ждет целое, который может быть представлен либо в десятичном или шестнадцатеричном литерал, так что эти два вызова полностью эквивалентны:

class.function(0x77)
class.function(119)  # 0x77 == 119

даже print(0x77) покажет 119 (поскольку decimal является представлением по умолчанию).

Итак, мы должны скорее говорить о преобразовании строкового представления до целое. Строка может быть шестнадцатеричным представлением, например "0x77" , а затем анализировать это с базовым параметром:

 >>> int('0x77', 16)
 119

или десятичный, затем разберите его как int('119').

тем не менее, хранение integer всякий раз, когда вы имеете дело с целыми числами, лучше.

EDIT: как предложил @gnibbler, вы можете анализировать как int(x, 0), который обрабатывает оба формата.


>>> hex(119)
'0x77'
#or:
>>> hex(int("119"))
'0x77'

Это должно работать для вас.

вы также можете получить шестнадцатеричное представление символов:

>>> hex(ord("a"))
'0x61'

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

>>> print int("0x77", 16)
119

Если это не:

>>> print int("119")
119