有人能识别这些字节
的符号吗?乍一看,我倾向于认为这是“十六进制”,但我不认识像xf1Y
和e1fl
这样的符号:
b'vy\xe9\xb5\xa2\xba\xf1Y\xe8\xe1fl\x1d\x87\xacC'
当我使用some_text.encode('utf-8')
进行编码时,会得到这个结果。
我正在尝试获取字节,以便将其传递给与Python 2的字节字符串配合使用的加密方法。
有人能识别这些字节
的符号吗?乍一看,我倾向于认为这是“十六进制”,但我不认识像xf1Y
和e1fl
这样的符号:
b'vy\xe9\xb5\xa2\xba\xf1Y\xe8\xe1fl\x1d\x87\xacC'
当我使用some_text.encode('utf-8')
进行编码时,会得到这个结果。
我正在尝试获取字节,以便将其传递给与Python 2的字节字符串配合使用的加密方法。
你是正确的 - 这是十六进制表示法。
在字节文字中,任何无法用可打印的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'