gpt4 book ai didi

python - 如何使用 utf-8 将字符串编码为字节数组?

转载 作者:行者123 更新时间:2023-12-01 06:55:06 26 4
gpt4 key购买 nike

我想使用 utf-8 对字节数组中的字符串进行编码。例如,对于字符串 "CD" 我想获取 b"\x43\x44"。我已经尝试过这个,但它不起作用:

def toTab(strMessage):
return strMessage.encode('utf-8')

我得到了b'CD',这不是我想要的结果。

最佳答案

从 Python 2 到 3 的主要变化之一是 str 数据类型。更多关于here 。基本上,它们始终尽最大努力使人类可读,这在尝试将十六进制值保留在字符串中时可能会导致一些有趣和令人沮丧的事情。字符串前面的 b 告诉 python 它已被编码,因此您的函数实际上正在工作,但它显示为人类可读的。要展示这一点,只需尝试:

b'CD'.hex()

或者,更具体地说:

'CD'.encode().hex()

给出:

'4344'

编辑:澄清一下,python str 始终将 ASCII 表示为 ASCII。这可以通过在控制台中输入以下内容来显示:

"résumé".encode("utf-8")

这将产生:

b'r\xc3\xa9sum\xc3\xa9'

请注意,所有 ASCII 均按原样呈现,非 ASCI 则由字节表示。还要注意一些关键的事情,UTF-8 字符可以用 1 到 4 个字节(其中一个字节是 8 位)的任何形式表示。另一方面,整个 ASCII 集只能用 7 位表示,所有 ASCII 字节都用零填充。

同样,您的输出是 b'\x43\x44',它只是在视觉上表示为 b'CD'。如果您将其传递给 C 程序以利用缓冲区溢出,它会根据您的需要将字符串识别为 b'\x43\x44'

要展示这一点,请尝试:

if b'\x43\x44' == b'CD':
print(True, b'\x43\x44')
else:
print(False)

将打印:True b'CD'

关于python - 如何使用 utf-8 将字符串编码为字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com