带字符串字节的Python 3 Concat单字节

时间:2018-02-21 17:05:56

标签: python byte

我需要用从参数字符串中获取的字节来连接单个字节。

byte_command = 0x01
socket.send(byte_command + bytes(message, 'UTF-8'))

但是我收到了这个错误:

socket.send(byte_command + bytes(message, 'UTF-8'))
TypeError: str() takes at most 1 argument (2 given)

我认为这是因为我使用字符串concat运算符 - 我该如何解决?

2 个答案:

答案 0 :(得分:1)

从错误消息中,我得知您正在运行 Python2 (在 Python3 中工作)。假设message是一个字符串:

我还将socket重命名为sock,因此它不会与socket模块本身发生冲突。
正如大家所建议的那样,使用message.encode("utf8")进行转换是推荐/常见的(在 Python3 中,参数甚至不是必需的,因为 utf8 是默认编码)

答案 1 :(得分:0)

从该错误消息中,看起来您使用的是python2,而不是python3。在python2中,bytes只是str的别名,str只接受一个参数。

要制作在python2和python3中有效的东西,请使用str.encode而不是字节:

byte_command = b'0x01'
socket.send(byte_command + message.encode('UTF-8'))