python - 为什么 ByteArray() 组合数组值?(Python)
问题描述
>>> bytearray([2,88])
bytearray(b'\x02X')
为什么 bytearray() 将它们结合起来?为什么将 88 变成 ascii (X)?我期待两个单独的值,并且 88 转换为十六进制(x58)
bytearray(b'\x02,x58)
解决方案
因为 ASCII 88(大写字母 X)是可打印的,而bytes.str()
/的行为bytes.repr()
是不对可打印字符进行编码。
只需尝试打印bytearray(range(256))
,您就会看到有一系列可打印字符(从\x20
到\x7e
)不会显示为\x##
.
尽管如此,您可以输入\x58
字节序列,但它会再次显示为X
:
>>> b'\x58'
b'X'
这是打印所有编码为\x##
表单的值的小技巧:
>>> b = bytearray([2,88])
>>> print(''.join('\\x%02x'%x for x in b))
\x02\x58
推荐阅读
- java - Maven 不会从谷歌存储库下载 jars
- python-2.7 - 无法使用 Apriori 算法生成规则列表
- c++ - 在接受输入时运行后台循环 (C++)
- machine-learning - 当动作不影响强化学习中的状态时,它叫什么?
- typescript - 为什么类型谓词的类型必须可以分配给它的参数类型?
- python-3.x - 从 .xlsx 创建文件夹结构
- javascript - 对象数组到带有修改的对象
- html - DOM contenteditable 选择父节点
- vba - 使用vba从ms访问表单文本框中的多个excel文件中检索特定的单元格值
- css - 在 Datatables 中的列中删除或添加类只会更改第一页