我需要用从参数字符串中获取的字节来连接单个字节。
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运算符 - 我该如何解决?
答案 0 :(得分:1)
从错误消息中,我得知您正在运行 Python2 (在 Python3 中工作)。假设message
是一个字符串:
Python3 ([Python]: class bytes([source[, encoding[, errors]]])):
byte_command = b"\x01"
sock.send(byte_command + bytes(message, 'UTF-8'))
Python2 (其中bytes
和str
相同):
byte_command = "\x01"
sock.send(byte_command + 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'))