b String with several inputs (TypeError: %b requires a bytes-like object, or an object that implements __bytes__, not 'str')
Question:
I am trying to code a String with several inputs, but this String should be converted into bytes because I am doing a program that connects to a server (using sockets), that uses a protocol which needs to receive messages in bytes.
I am doing the following code:
print("Please introduce your username: ")
username = input()
print("Please introduce your password: ")
password = input()
client_socket.send(b"AUTH:%s:%sn"%(username, password))
It gives me the following error:
%b requires a bytes-like object, or an object that implements ____bytes____, not 'str'
The server should receive the following message:
AUTH:username:password
with the appropiate username and password in order to log in.
Do you have any idea about how to make this work?
Answers:
Use:
username = input()
password = input()
data = "AUTH:{}:{}n".format(username, password)
client_socket.send(data.encode())
Explanation:
- Obtain the data you need
- Use string formatting to build the string you require1.
- Use the build-int
encode
method of strings to obtain a byte object2.
- Profit!
1You can also use python’s f-string or python’s printf-style formatting to build the string you need.
2 The default encoding is UTF-8, which gives you access to the entire Unicode character set. You can gain more insight about string encoding in the Unicode HOWTO.
I am trying to code a String with several inputs, but this String should be converted into bytes because I am doing a program that connects to a server (using sockets), that uses a protocol which needs to receive messages in bytes.
I am doing the following code:
print("Please introduce your username: ")
username = input()
print("Please introduce your password: ")
password = input()
client_socket.send(b"AUTH:%s:%sn"%(username, password))
It gives me the following error:
%b requires a bytes-like object, or an object that implements ____bytes____, not 'str'
The server should receive the following message:
AUTH:username:password
with the appropiate username and password in order to log in.
Do you have any idea about how to make this work?
Use:
username = input()
password = input()
data = "AUTH:{}:{}n".format(username, password)
client_socket.send(data.encode())
Explanation:
- Obtain the data you need
- Use string formatting to build the string you require1.
- Use the build-int
encode
method of strings to obtain a byte object2. - Profit!
1You can also use python’s f-string or python’s printf-style formatting to build the string you need.
2 The default encoding is UTF-8, which gives you access to the entire Unicode character set. You can gain more insight about string encoding in the Unicode HOWTO.