python - 类型错误 : encoding without string argument

标签 python

我看不出问题

您好,我有这个函数可以将 JSON 字典转换为字节。然后用 b'\x00\x00' 分隔每个元素。我这样做是为了它可以与我在 Game Maker 中为游戏制作的客户端交谈。

为了更好地说明我的问题,我将使用一个示例。这是我正在运行的函数 Encode({"header": 1})

我想要的结果 b'header\x00\x001\x00\x00'

我得到的是 TypeError: encoding without a string argument

我尝试过的

我试过自己调试这个,但我似乎无法找到手头的问题。我觉得奇怪的一件事是,如果我将代码中的这一行放在 print 中(这也是导致问题的部分)。它工作 print(buffer + bytes(_e,"utf-8") + b'\x00\x00') 但这不 buffer = buffer + bytes(_e,"utf- 8") + b'\x00\x00'.

代码

# Encode function
def Encode(data):
    buffer = b''
    for e in data.items():
        for _e in e:
            buffer = buffer + bytes(_e,"utf-8") + b'\x00\x00'
    return buffer

最佳答案

您需要修改代码以获取每对键值并将它们转换为字节。请记住,您需要使用 str() 将每个值转换为字符串,在将它们转换为字节之前:

# Encode function
def Encode(data):
    buffer = b''
    for key, value in data.items():
        buffer = buffer + bytes(key, 'utf-8') + b'\x00\x00' + bytes(str(value), 'utf-8') + b'\x00\x00'
    return buffer

r = Encode({"header": 1})
print(r)

这将返回:

b'header\x00\x001\x00\x00'

关于python - 类型错误 : encoding without string argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67452698/

相关文章:

python - 列表理解中的问题以获得计数

python - 如何将列名添加到每个 Pandas 值中?

python - VS Code 未注册 ipykernel 已安装

python - 升级 pip/安装 django - [SSL : TLSV1_ALERT_PROTOCOL_VERSION]

python - Tkinter:我如何动态创建一个可以销毁或删除的小部件?

python - pandas - 将列的一部分聚合为新列中的新值

python - NLTK Tokenizer 编码问题

python - global format() 函数的用途是什么?

python - 正则表达式在 Python 中添加引号,这样我就可以返回 Python 字典

python - 如何在 Pandas 中创建新列?