es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo crear una lista de bytes en Python?

Estoy enfrentando un desafío para crear una lista de bytes en Python. Solo quiero convertir la lista de enteros en una lista de bytes como se menciona en el resultado esperado. El problema es que quiero enviar la salida esperada al dispositivo serie conectado al puerto COM y con la salida actual el dispositivo serie no está reconociendo el separador ‘\’. Por favor sugiérame la forma correcta de manejar ‘\’ en una lista de bytes.

cmdlist = [2, 12, 1, 1, 1, 0, 0, 1, 3, 7, 42, 101, 85, 18]

Convertir la lista CMD en una lista de Hexadecimales

for i in range(len(cmdlist)):
cmdlist[i] = hex(cmdlist[i])

f_cmdList = ”

Convertir la lista de CMD en una lista de cadenas

for i in range(len(cmdlist)):
f_cmdList += ‘\’ + (cmdlist[i])

Final_cmdlist = (bytes(f_cmdList, ‘utf-8’))
print(Final_cmdlist)

Salida actual: b’\0x2\0xc\0x1\0x1\0x1\0x0\0x0\0x1\0x3\0x7\0x2a\0x65\0x55\0x12′

Salida esperada: b’\0x2\0xc\0x1\0x1\0x1\0x0\0x0\0x1\0x3\0x7\0x2a\0x65\0x55\0x12′

¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para crear una lista de bytes a partir de una lista de enteros, puedes utilizar la función bytes(). Aquí está el código corregido:

    cmdlist = [2, 12, 1, 1, 1, 0, 0, 1, 3, 7, 42, 101, 85, 18]
    
    # Convertir lista CMD a lista de bytes
    bytes_list = bytes(cmdlist)
    
    # Imprimir la lista de bytes
    print(bytes_list)
    

    El resultado será:

    b'\x02\x0c\x01\x01\x01\x00\x00\x01\x03\x07*eu\x12'
    

    Este es el resultado esperado sin los separadores \. Puedes enviar esta lista de bytes al dispositivo serial conectado al puerto COM.

    No es necesario convertir la lista de enteros a hexadecimal y luego a cadena antes de crear la lista de bytes. La función bytes() puede convertir directamente la lista de enteros en la lista de bytes.

Comments are closed.