Python 具有多个输入的字符串(TypeError:%b需要一个类似字节的对象,或者一个实现uuu bytes uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

Python 具有多个输入的字符串(TypeError:%b需要一个类似字节的对象,或者一个实现uuu bytes uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,python,string,sockets,Python,String,Sockets,我试图用几个输入编码一个字符串,但是这个字符串应该转换成字节,因为我正在做一个连接到服务器(使用套接字)的程序,该程序使用的协议需要以字节为单位接收消息。 我正在执行以下代码: print("Please introduce your username: ") username = input() print("Please introduce your password: ") password = input() client_socket.send(b"AUTH:%s:%s\n"%(use

我试图用几个输入编码一个字符串,但是这个字符串应该转换成字节,因为我正在做一个连接到服务器(使用套接字)的程序,该程序使用的协议需要以字节为单位接收消息。 我正在执行以下代码:

print("Please introduce your username: ")
username = input()
print("Please introduce your password: ")
password = input()
client_socket.send(b"AUTH:%s:%s\n"%(username, password)) 
它给了我以下错误:

%b requires a bytes-like object, or an object that implements ____bytes____, not 'str'
服务器应收到以下消息:

AUTH:username:password
使用适当的用户名和密码登录

您知道如何使这项工作正常进行吗?

使用:

username=input()
密码=输入()
data=“AUTH:{}:{}\n”。格式(用户名、密码)
client_socket.send(data.encode())
说明:

  • 获取您需要的数据
  • 使用string生成所需的字符串*
  • 使用字符串的buildint方法获取字节对象
  • 利润
    *您也可以使用或python来构建所需的字符串。

    这是正确的方法,尽管我建议使用显式编码并解释原因。您是对的@MadPhysical,显式声明编码很重要。如果您确定使用的是UTF-8,那么可以使用
    …encode(encoding=“UTF-8”)
    (默认设置)“'latin-1'也是不错的选择。对于前256个值,基本上是ASCII“ascii”将确保输入中没有任何非ascii字符。