Преобразование шестнадцатеричной строки в int в Python
У меня это может быть "0xffff"
или просто "ffff"
.
Чтобы преобразовать строку в int, передайте строку в int
вместе с базой, из которой вы конвертируете.
Обе строки будут достаточны для преобразования следующим образом:
>>> string_1 = "0xffff"
>>> string_2 = "ffff"
>>> int(string_1, 16)
65535
>>> int(string_2, 16)
65535
Letting int
вывод
Если вы передадите 0 в качестве базы, int
выведет базу из префикса в строке.
>>> int(string_1, 0)
65535
Без шестнадцатеричного префикса, 0x
, int
не имеет достаточно информации, чтобы угадать:
>>> int(string_2, 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 0: 'ffff'
литералы:
Если вы вводите исходный код или интерпретатор, Python сделает для вас преобразование:
>>> integer = 0xffff
>>> integer
65535
Это не будет работать с ffff
, потому что Python подумает, что вы вместо этого пытаетесь написать допустимое имя Python:
>>> integer = ffff
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ffff' is not defined
Числа Python начинаются с цифры, в то время как имена Python не могут начинаться с цифры.