如何“声明”一个空字节变量?

新手上路,请多包涵

如何在 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))

原文由 tsteemers 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 796
2 个回答

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

但是,重复连接到一个字符串涉及多次复制该字符串。可变的 bytearray 可能会更快:

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

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

原文由 Mechanical snail 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

封装您想使用默认编码,只需使用 msg = b'' ,但如果编码不同,这将垃圾整个缓冲区

原文由 Dr. Sahib 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题