Convertir una cadena hexadecimal a un número entero en Python

Resuelto Matt asked hace 15 años • 10 respuestas

¿Cómo convierto una cadena hexadecimal en un número entero?

"0xffff"65535
"ffff"65535
Matt avatar Oct 17 '08 00:10 Matt
Aceptado

Sin el 0xprefijo, debe especificar la base explícitamente; de ​​lo contrario, no hay forma de saberlo:

x = int("deadbeef", 16)

Con el 0xprefijo, Python puede distinguir hexadecimal y decimal automáticamente:

>>> print(int("0xdeadbeef", 0))
3735928559
>>> print(int("10", 0))
10

( Debe especificar 0como base para invocar este comportamiento de adivinación de prefijos; si omite el segundo parámetro, int()asumirá base-10).

Dan Lenski avatar Oct 16 '2008 17:10 Dan Lenski

int(hexstring, 16)funciona y funciona con y sin el prefijo 0x:

>>> int("a", 16)
10
>>> int("0xa", 16)
10
unwind avatar Oct 16 '2008 17:10 unwind

Convertir una cadena hexadecimal a int en Python

Puedo tenerlo como "0xffff"o simplemente "ffff".

Para convertir una cadena a un int, pase la cadena intjunto con la base desde la que está convirtiendo.

Ambas cadenas serán suficientes para la conversión de esta manera:

>>> string_1 = "0xffff"
>>> string_2 = "ffff"
>>> int(string_1, 16)
65535
>>> int(string_2, 16)
65535

Dejando intinferir

Si pasa 0 como base, intinferirá la base a partir del prefijo en la cadena.

>>> int(string_1, 0)
65535

Sin el prefijo hexadecimal 0x, intno tiene suficiente información para adivinar:

>>> int(string_2, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 0: 'ffff'

literales:

Si está escribiendo el código fuente o un intérprete, Python realizará la conversión por usted:

>>> integer = 0xffff
>>> integer
65535

Esto no funcionará ffffporque Python pensará que estás intentando escribir un nombre legítimo de Python:

>>> integer = ffff
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'ffff' is not defined

Los números de Python comienzan con un carácter numérico, mientras que los nombres de Python no pueden comenzar con un carácter numérico.

Russia Must Remove Putin avatar May 14 '2016 02:05 Russia Must Remove Putin

Para cualquier cadena dada s:

int(s, 16)
Jorge Ferreira avatar Oct 16 '2008 17:10 Jorge Ferreira