GOOGLE ADS

miércoles, 27 de abril de 2022

¿Cómo 'declaro' una variable de bytes vacía?

¿Cómo inicializo ('declaro') una bytesvariable vacía en Python 3?

Estoy tratando de recibir fragmentos de bytes y luego cambiar eso a una cadena utf-8. Sin embargo, no estoy seguro de cómo inicializar la variable inicial que contendrá toda la serie de bytes. msgEsta variable se llama No puedo inicializarlo como None, porque no puedes agregar un bytesy un
NoneType. No puedo inicializarlo como una cadena Unicode, porque entonces intentaré agregarlo bytesa una cadena. Además, a medida que el programa receptor evoluciona, podría meterme en un lío con series de bytes que contienen solo partes de caracteres. No puedo prescindir de una msginicialización, porque entonces msgsería referenciado antes de la asignación. El siguiente es el código en cuestión.

def handleClient(conn, addr):
print('Connection from:', addr)
msg =?
while 1:
chunk = conn.recv(1024)
if not chunk:
break
msg = msg + chunk
msg = str(msg, 'UTF-8')
conn.close()
print('Received:', unpack(msg))


Solución del problema

Simplemente use una cadena de bytes vacía, b''.

Sin embargo, concatenar a una cadena repetidamente implica copiar la cadena muchas veces. A bytearray, que es mutable, probablemente será más rápido:

msg = bytearray() # New empty byte array
# Append data to the array
msg.extend(b"blah")
msg.extend(b"foo")

Para decodificar la matriz de bytes en una cadena, use msg.decode(encoding='utf-8').

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...