为什么base64.b64encode返回的值是b'somestring'而不是简单的'somestring'?

2024-10-01 09:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑以下代码。。。你知道吗

base64EncodedCredentials = base64.b64encode(b"johndoe:mysecret")
print(base64EncodedCredentials)

我得到的回应是

b'am9obmRvZTpteXNlY3JldA=='

为什么在弦前有个b?如何仅获取字符串值'am9obmRvZTpteXNlY3JldA=='?你知道吗

从技术上讲,这个问题可以被认为是另一个问题的重复,如果你知道这个问题是关于字节字符串和字符串的。在我的例子中,我问这个问题是因为我不知道有什么叫做字节字符串。对于新的Python程序员来说,这个问题可能是有益的,因为它使用他们在程序或调试器上看到的语言。如果他们不知道字节字符串是什么,那么这个问题可能很有用,可以将他们的问题转化为更流利的Python程序员使用的技术术语。这个问题在词汇的使用上有所不同。你知道吗


Tags: 字符串代码程序字节调试器例子程序员print
2条回答

请参阅this post以摆脱编码。你知道吗

print(base64EncodedCredentials.decode("utf-8"))

它正在返回一个bytes对象。通常base64用于确保7位安全,因此通常与面向字节(而不是面向字符)的数据一起使用,例如,将套接字挤出。你知道吗

您可以将其解码为字符串,就像任何其他字节对象一样:

output.decode('ascii')

字节和字符串对象使用encode()decode()在彼此之间更改。使用ascii编解码器是安全的,因为base64保证只返回7位ascii。你知道吗

相关问题 更多 >