Convierte la cadena hexadecimal en Int en Python
-
Usa
int()
para convertir el hexadecimal en int en Python - Convierte una cadena hexadecimal no prefijada a Int en Python
- Convierte la cadena hexadecimal prefijada a Int en Python
- Convertir la pequeña y gran cadena hexadecimal de Endian a Int en Python
- Convertir hexadecimal a entero con signo en Python
Este tutorial demostrará cómo convertir la cadena de hexadecimals en int
en Python. Cubrirá diferentes formatos de hexadecimals como el firmado, pequeño y grande, hexadecimal comentado 0x
, y la cadena de hexadecimals por defecto.
Usa int()
para convertir el hexadecimal en int en Python
La forma más común y efectiva de convertir un hexadecimal en un número entero en Python es usar la función de escribir int()
.
Esta función acepta dos argumentos: uno obligatorio, que es el valor a convertir, y un segundo opcional, que es la base del formato de los números con el valor por defecto 10
.
Otros formatos de números son 2
para binario, 8
para octal, y 16
para hexadecimal. Si pones 0
como argumento para el valor base, derivará el formato de número del prefijo del valor. Si no hay ningún prefijo, lo reconocerá automáticamente como un decimal, 0b
para binario, 0o
para octal y 0x
para hexadecimal.
Convierte una cadena hexadecimal no prefijada a Int en Python
Si la cadena hexadecimal no tiene prefijo, entonces especifique que el valor base de la función int()
sea 16.
Por ejemplo:
hex_val = "beef101"
print(int(hex_val, 16))
Resultado:
200208641
El resultado es la conversión decimal o entera del valor hexadecimal beef101
.
Convierte la cadena hexadecimal prefijada a Int en Python
Si la cadena hexadecimal tiene un prefijo 0x
, entonces cambia el argumento del valor base a 0
para detectar el prefijo automáticamente.
Todavía puedes pasar 16
como base, pero si estás tratando con múltiples valores con diferentes formatos de números, pasar 0
es el mejor enfoque.
hex_val = "0xdeadcab"
print(int(hex_val, 0))
print(int(hex_val, 16))
Resultado:
233495723
233495723
Convertir la pequeña y gran cadena hexadecimal de Endian a Int en Python
Las órdenes de bytes de endian y big-endian son dos tipos de sistemas de ordenamiento para el hexadecimal. El orden por defecto es el little-endian, que pone el número más significativo en la parte más a la derecha de la secuencia, mientras que el big-endian hace lo contrario.
Teniendo esto en cuenta, todo lo que tenemos que considerar es convertir el valor hexadecimal del big-endian en un little-endian. Después, se puede realizar la conversión habitual en él.
Para convertir una cadena hexadecimal big-endian en una little-endian, usa bytearray.fromhex()
y usa la función reverse()
en el resultado. Después, convierta el valor hexadecimal de nuevo en cadena y conviértalo en un entero.
big_endian = "efbe"
def to_little(val):
little_hex = bytearray.fromhex(val)
little_hex.reverse()
print("Byte array format:", little_hex)
str_little = "".join(format(x, "02x") for x in little_hex)
return str_little
little_endian = to_little(big_endian)
print("Little endian hex:", little_endian)
print("Hex to int:", int(little_endian, 16))
Para resumir este bloque de código:
- Llama a
bytearray.fromhex()
para convertir la cadena hexadecimal de big-endian en un valor hexadecimal de byte array. - Invierte del array de bytes para convertir el big-endian en un formato little-endian.
- Convierte el valor del array de bytes de nuevo en una cadena de formato hexadecimal en little-endian.
- Convierte la cadena en un número entero usando
int()
.
Resultado:
Byte array format: bytearray(b'\xbe\xef')
Little endian hex: beef
Hex to int: 48879
Convertir hexadecimal a entero con signo en Python
La conversión de cualquier formato de número en un entero firmado necesitaría una operación llamada el Complemento de dos, que es una operación matemática poco inteligente para calcular los números firmados.
Así que antes de que podamos convertir un hexadecimal en un número entero con signo, necesitaríamos definir una función que llevara a cabo la operación del Complemento de Dos.
def twosComplement_hex(hexval):
bits = 16 # Number of bits in a hexadecimal number format
val = int(hexval, bits)
if val & (1 << (bits - 1)):
val -= 1 << bits
return val
El bit más a la izquierda de un valor binario se llama el bit con signo, determinando si el entero es positivo o negativo. Esta función reservará ese bit como el bit con signo y desplazará los otros bits para compensar usando el operador de desplazamiento a la izquierda <<
.
Ahora, pasando a la conversión real del valor hexadecimal a int. con signo.
hex_val1 = "ff"
hex_val2 = "ffff"
hex_val3 = "aaff"
def twosComplement_hex(hexval):
bits = 16
val = int(hexval, bits)
if val & (1 << (bits - 1)):
val -= 1 << bits
return val
print(twosComplement_hex(hex_val1))
print(twosComplement_hex(hex_val2))
print(twosComplement_hex(hex_val3))
Resultado:
255
-1
-21761
Ahora, hemos logrado convertir una cadena hexadecimal en un entero con signo.
En resumen, hemos cubierto la conversión de diferentes tipos de formatos hexadecimales en enteros con y sin signo. Utilice int()
con los argumentos de valor y base para convertir un hexadecimal en un entero sin signo.
Si el hexadecimal está en un formato big-endian, conviértalo en un formato little-endian primero usando bytearray.fromhex()
y reverse()
.
Por último, si necesita convertir una cadena hexadecimal a un entero con signo, realice la operación de complemento a dos en el valor hexadecimal para obtener un valor entero con signo.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedInArtículo relacionado - Python Hex
- Bitwise XOR de números hexadecimales en Python
- Convertir hexadecimal a Base64 en Python
- Convertir binario a hexadecimal en Python
- Convierta HEX a RGB en Python
- Cadena a hexadecimal en Python
- Convierta Hex a ASCII en Python