gpt4 book ai didi

python-3.x - python : Indexing bytes array returns an integer

转载 作者:行者123 更新时间:2023-12-04 18:39:44 25 4
gpt4 key购买 nike

下面是 Python 3.3 中的示例交互

>>> bArray = bytes(b'ABCDE')
>>> bArray
b'ABCDE'
>>> bArray[0]
65
>>> type(bArray[0])
<class 'int'>
>>> bArray[0:1]
b'A'
>>> type(bArray[0:1])
<class 'bytes'>
>>> struct.pack('B', bArray[1])
b'B'
>>> type(struct.pack('B', bArray[1]))
<class 'bytes'>

它表明索引一个字节数组会产生一个整数,而切片它会返回一个字节对象。
  • 谁能解释一下为什么会这样?索引不应该也返回一个字节对象吗?
  • 如果保证应用程序使用数字 [0,255],使用字节是否比使用普通整数更有效?
  • 最佳答案

  • 引自 the manual

  • Warning While string objects are sequences of characters (represented by strings of length 1), bytes and bytearray objects are sequences of integers (between 0 and 255), representing the ASCII value of single bytes. That means that for a bytes or bytearray object b, b[0] will be an integer, while b[0:1] will be a bytes or bytearray object of length 1. The representation of bytes objects uses the literal format (b'...') since it is generally more useful than e.g. bytes([50, 19, 100]). You can always convert a bytes object into a list of integers using list(b).



    所以不再有“字节”对象了。
  • 我能找到的唯一解释是字节序列的内存效率更高,计算效率更低 - 因为所有操作都需要转换为整数(即​​使在内部)
  • 关于python-3.x - python : Indexing bytes array returns an integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29299136/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com