【问题标题】:Why is ByteArray() combining array values? (Python)为什么 ByteArray() 组合数组值? (Python)
【发布时间】:2019-05-04 06:13:52
【问题描述】:
>>> bytearray([2,88])
bytearray(b'\x02X')

为什么 bytearray() 将它们结合起来?为什么将 88 变成 ascii (X)?我期待两个单独的值,88 转换为十六进制(x58)

bytearray(b'\x02,x58)

【问题讨论】:

    标签: python arrays hex byte ascii


    【解决方案1】:

    因为 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
    

    【讨论】:

    • 嗯,好的,谢谢。那么有没有办法获取一个数组: arr = [2,88] 并让它变成: bytearray(b'\x02,x58) 以某种方式使用 bytearray ?
    猜你喜欢
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2022-12-09
    • 2016-10-19
    • 2016-08-15
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    相关资源
    最近更新 更多