Python3字节的奇怪表示法

2024-06-26 13:23:22 发布

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

有人能确定这些bytes的符号是什么吗?乍一看,我倾向于认为是“十六进制”,但我不知道像xf1Ye1fl这样的东西是什么:

b'vy\xe9\xb5\xa2\xba\xf1Y\xe8\xe1fl\x1d\x87\xacC'

当我使用some_text.encode('utf-8')对事物进行编码时,我得到了这个结果

我正在尝试获取可以传递给使用Python2字节字符串的加密方法的字节


Tags: 字节bytes符号xaccvyxe9xe8xba
1条回答
网友
1楼 · 发布于 2024-06-26 13:23:22

你说得对——这是一种十六进制表示法

在字节文字中,任何不能由可打印ASCII字符(或标准转义符之一\n\t\r)表示的字节都表示为\xNN,其中NN是字节的2位十六进制表示

让您困惑的是,您将例如\xf1Y误认为是单个转义序列,而实际上它代表两个单独的字节:

>>> len(b'\xf1Y')
2
>>> [bytes([b]) for b in b'\xf1Y']
[b'\xf1', b'Y']

如果迭代字节对象,将返回字节的整数值:

>>> list(b'vy\xe9\xb5\xa2\xba\xf1Y\xe8\xe1fl\x1d\x87\xacC')
[118, 121, 233, 181, 162, 186, 241, 89, 232, 225, 102, 108, 29, 135, 172, 67]
>>> bytes([118])
b'v'
>>> bytes([121])
b'y'
>>> bytes([233])
b'\xe9'

escape sequences in Python string and bytes objects的文档中有一些关于Python理解的转义序列的更多信息(尽管上面的转义序列是Python用于表示字节对象的唯一序列)

相关问题 更多 >