Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created December 10, 2020 05:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/c85a47c3c0d49bfd30b7159704b0a32a to your computer and use it in GitHub Desktop.
Save parzibyte/c85a47c3c0d49bfd30b7159704b0a32a to your computer and use it in GitHub Desktop.
def obtener_valor_real(caracter_hexadecimal):
equivalencias = {
"f": 15,
"e": 14,
"d": 13,
"c": 12,
"b": 11,
"a": 10,
}
if caracter_hexadecimal in equivalencias:
return equivalencias[caracter_hexadecimal]
else:
return int(caracter_hexadecimal)
def hexadecimal_a_decimal(hexadecimal):
# Convertir a minúsculas para hacer las cosas más simples
hexadecimal = hexadecimal.lower()
# La debemos recorrer del final al principio, así que la invertimos
hexadecimal = hexadecimal[::-1]
decimal = 0
posicion = 0
for digito in hexadecimal:
print(f"Decimal es {decimal}")
# Necesitamos que nos dé un 10 para la A, un 9 para el 9, un 11 para la B, etcétera
valor = obtener_valor_real(digito)
print(f"El verdadero valor de {digito} es {valor}")
elevado = 16 ** posicion
print(
f"Elevamos 16 a la potencia {posicion}, el resultado es {elevado}")
equivalencia = elevado * valor
print(
f"Multiplicamos el número elevado por el valor del carácter actual: {equivalencia}")
decimal += equivalencia
print(f"Ahora decimal es {decimal}")
posicion += 1
return decimal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment