Python 3如何“声明”空的“字节”变量

2024-04-29 02:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在Python 3中“声明”空的bytes变量?

我正在尝试接收字节块,稍后将其更改为utf-8字符串。 但是,我不确定如何声明将保存整个字节序列的初始变量。这个变量叫做msg。我不能声明为None,因为不能添加bytesNoneType。我不能将其声明为unicode字符串,因为这样我将尝试将bytes添加到字符串中。而且,随着接收程序的发展,它可能会使我陷入一个只包含部分字符的字节序列的混乱。我不能没有msg声明,因为这样msg将在赋值之前被引用。 以下是所讨论的代码

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))

Tags: 字符串程序none声明字节bytesunicode序列
3条回答

只需使用空字节字符串b''

但是,重复地连接到字符串需要多次复制该字符串。可变的^{}可能更快:

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

要将字节数组解码为字符串,请使用msg.decode(encoding='utf-8')

根据文件:

Blockquote socket.recv(bufsize[, flags]) Receive data from the socket. The return value is a string representing the data received. Blockquote So, I think msg="" should work just fine:

>>> msg = ""
>>> msg
''
>>> len(msg)
0
>>>

使用msg = bytes('', encoding = 'your encoding here')

使用默认编码进行封装,只需使用msg = b'',但如果缓冲区不在同一编码中,则这将使整个缓冲区垃圾化

相关问题 更多 >