99_*_*m4n 4 python string byte python-3.x
我了解 Python 中字节/字节数组和字符串之间的差异以及如何处理/操作/转换这些对象,但我找不到您更喜欢在代码中使用字节而不是字符串的现实生活场景/示例。
Python 中字节对象相对于字符串对象有哪些优点?在哪些现实生活场景中您应该将代码字符串转换为字节,为什么?
小智 6
对于所有现代计算机体系结构,一个字节由 8 位组成,因此可以编码 256 个不同的值。
在 ASCII 字符编码中,只有 128 个不同的值,其中只有一部分是可打印的。使用 UTF-8 会变得更复杂一些,但最终会遇到类似的问题,即并非所有字节序列都可以表示为字符串。因此,只要你有一个不能表示为字符串的字节序列,你就必须使用bytes()or bytearray。
您可能需要使用字节的一个示例是在使用加密和伪随机序列生成时,您通常会得到无法一对一表示为字符串的字节序列。这是因为在生成伪随机数和序列时您希望使用尽可能大的输出空间。请参阅stdlib 中的Secrets.token_bytes示例。
如果要将这样的序列表示为字符串,可以将其编码为全部位于 ASCII 编码空间内的字节序列,但当然,代价是使用更多字节。例如,您可以将其编码为十六进制字符或 base64。Hex 的优点是生成的字符串的大小始终为2 * n_bytes,而 base64 是将字节编码为 ASCII 的最有效方法,即它将使用最少的额外字节。请注意,secrets stdlib 模块还为您提供了方便的函数来为您执行此转换。