我看不出问题
您好,我有这个函数可以将 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/