Uso de b'string'

Saludos foro, estoy comenzando con python en la version 3 y me estoy encontrando que no me aclaro bien utilizando el uso de b’string’.
Os pondre un ejemplo de lo que pretendo y de lo que no soy capaz. Estroy trabajando con un microcontrolador esp32 c3 y tengo lo siguiente :

trama1 = b’\x00\x01\xea\x01’

Mi intencion es el primer ‘\01’ cambiarlo por una variable. Es decir, dejar el resto de bloque como esta, pero en esta parte concreta, implementar, por ejemplo, un contador.

Toda forma que intente me da error y estoy bloqueado aqui.

Inente hacer un trama1 = b’\x00’+str(contador)+‘\xea\x01’ y cosas similares sin funcionar.

Podriais iluminarme y guiarme en como se podria hacer lo que pretendo?

Gracias.

Hola @Jummi,

Puedes concatenar de la siguiente manera:

frame = b'\x00' + str(contador).encode('utf-8') + b'\xea\x01'

Ya nos dices si funciona,

Saludos!

Muchas gracias, probare lo que me indicas.

Hice el siguiente codigo :

for contador in range(1, 5):
trama = b’\x00’+str(contador).encode(‘utf-8’)+b’\xea\x01\x00’
print(trama)

El resulrado es :slight_smile:

b’\x001\xea\x01\x00’
b’\x002\xea\x01\x00’
b’\x003\xea\x01\x00’
b’\x004\xea\x01\x00’

La variable contador la suma a la anterior, no la añade. Ya he visto que uno de los fallos que cometia es no añadir el b en la suma del segundo trozo.

El resusltado que busco seria :

b’\x00\x01\xea\x01\x00’
b’\x00\x02\xea\x01\x00’
b’\x00\x03\xea\x01\x00’
b’\x00\x04\xea\x01\x00’

Al final, cambiando str por chr, funciono como queria :

for contador in range(1, 5):
trama = b’\x00%s’ % chr(contador)+b’\xea\x01\x00’
print(trama)

resuldado :

b’\x00\x01\xea\x01\x00’
b’\x00\x02\xea\x01\x00’
b’\x00\x03\xea\x01\x00’
b’\x00\x04\xea\x01\x00’

Muchas gracias Morphhneus por guiarme.

1 me gusta

Nada, no funciona. Quiero modificar el \x00 y el \xea para poder poner cualquier numero desde un conador y no hay forma.