python - Python 3 字节的奇怪符号

标签 python python-3.x character-encoding byte python-3.5

有人可以识别这些 bytes 的表示法是什么吗?乍一看,我倾向于认为“十六进制”,但我不认识像xf1Ye1fl 这样的东西是什么:

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'

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

关于python - Python 3 字节的奇怪符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41421501/

相关文章:

python-3.x - 如何让 Sphinx-autoapi 显示来自源代码的自定义评论

python-3.x - python3解压缩元组列表

asp.net - UpdatePanel 似乎重新编码了页面标题中的字符?

android - 无法将 SQLiteDatabase 编码设置为 UTF-8 以外的任何编码

python - 如何查找连续重复 3 次的列表的重复项

python - 如何在pandas中映射不同数据帧基础日期时间的列

python - 可疑行为 - 在 Python 3.4.1 中 str 不可调用返回 "".join(list(map(str,reversed(result))))

javascript - 在 Firefox 中出现 "undeclared character encoding"错误

python - sys.exit(0) 和 os._exit(0) 有什么区别

python - 在 matplotlib 中绘制多个图时出现索引错误