所以,我有一个字节格式的字节,看起来像这样:

b'\xFF'

很容易理解,一个字节是"\x"之后的两个符号(0-F)

但有时模式不匹配,在"\x"后包含两个以上的符号.

例如,如果我使用secrets.token_bytes(),我可以得到类似的结果:

>>> import secrets
>>> secrets.token_bytes(32)
b't\xbcJ\xf0'

或者,使用hashlib模块:

>>> import hashlib
>>> hashlib.sha256('abc'.encode()).digest()
b'\xbax\x16\xbf\x8f\x01\xcf\xeaAA@\xde]\xae"#\xb0\x03a\xa3\x96\x17z\x9c\xb4\x10\xffa\xf2\x00\x15\xad'

那么,有人能解释一下这些额外的符号的目的是什么以及它们是如何生成的吗?

推荐答案

这是Python打印字节字符串的一种奇怪方式.如果字节值是可打印的ASCII字符之一,它将打印该字符;否则会打印十六进制转义.

显示bytes(range(0x100))以直观地查看它.

要获得一致使用十六进制转义的字符串,您需要自己构建它.

print(''.join(f'\\x{i:02x}' for i in bytes(range(0x100))))

Python相关问答推荐

symy.分段使用numpy数组

如何使用Python中的clinicalTrials.gov API获取完整结果?

GL pygame无法让缓冲区与vertextPointer和colorPointer一起可靠地工作

Python:在类对象内的字典中更改所有键的索引,而不是仅更改一个键

提取两行之间的标题的常规表达

标题:如何在Python中使用嵌套饼图可视化分层数据?

2D空间中的反旋算法

NP.round解算数据后NP.unique

梯度下降:简化要素集的运行时间比原始要素集长

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

Odoo 16使用NTFS使字段只读

未知依赖项pin—1阻止conda安装""

如何从列表框中 Select 而不出错?

如何更改groupby作用域以找到满足掩码条件的第一个值?

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

Python Pandas—时间序列—时间戳缺失时间精确在00:00

Python—转换日期:价目表到新行

如何创建引用列表并分配值的Systemrame列

PySpark:如何最有效地读取不同列位置的多个CSV文件

操作布尔值的Series时出现索引问题