Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Convertir STR a HEX
#1
Hola a todos


Tengo la siguiente duda:

Necesito convertir un string con este formato 01AB00DEFF y crear una lista de
numeros hex,  es decir [0x01, 0xAB, 0x00, 0xDE, 0xFF]

He probado lo siguiente, pero me devuelve una lista de strings y lo que necesito es que la lista tenga números HEX

cmd="01AB00DEFF"
cmd2 = (','.join("0x%s" % cmd[i : i + 2] for i in range(0, len(cmd), 2)))

cmd2= ['0xAB, 0x00, 0xDE, 0xFF']


Agradezco de antemano vuestra ayuda


Saludos
Responder
#2
Hola, ¿cómo estás?

El problema es que no hay algo así como un número hexadecimal, ni en Python ni en ningún otro lenguaje. Para Python 42 y 0x2A son exactamente el mismo número y tienen el mismo tipo de dato:

  1. >>> 42 == 0x2A
  2. True
  3. >>> type(42) == type(0x2A)
  4. True


Teniendo en cuenta esto, lo que podés hacer es lo siguiente (modificando un poco tu código) para tener una lista de números enteros:

  1. >>> cmd = "01AB00DEFF"
  2. >>> cmd2 = [int(cmd[i : i + 2], 16) for i in range(0, len(cmd), 2)]
  3. >>> cmd2
  4. [1, 171, 0, 222, 255]


(El 16 del int() de la segunda línea indica que estás convirtiendo una cadena que representa un número hexadecimal).

La lista [1, 171, 0, 222, 255] es exactamente la misma que [0x01, 0xAB, 0x00, 0xDE, 0xFF]. Si querés tener los números representados (como cadenas) en hexadecimal para imprimirlos en pantalla o mostrarlos en algún lado, podés hacer:

  1. >>> list(map(hex, cmd2))
  2. ['0x1', '0xab', '0x0', '0xde', '0xff']


Sobre las funciones hex() e int(): https://micro.recursospython.com/recurso...cimal.html.

Saludos!
Responder
#3
Hola Francisco



Muchas gracias por tu respuesta



Tenía claro ell concepto de igualdad en cuanto al tipo de dato tanto en HEX como en decimal, pero donde me perdia es en
las conversiones  y más aun en el "troceado" de la trama y almacenamiento en listas


Más sencillo no podía ser, pero como decía aquel, si llega a ser un toro....


Lo dicho, muchas gracias
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)