gpt4 book ai didi

python - 如何从 Python 中的字节列表中获取最后一个字节项?

转载 作者:行者123 更新时间:2023-12-04 02:28:08 30 4
gpt4 key购买 nike

我有一个字节列表,想获取最后一项,同时保留其字节类型。使用 [-1] 它给出一个 int 类型,所以这不是一个直接的解决方案。
示例代码:

x = b'\x41\x42\x43'
y = x[-1]
print (y, type(y))
# outputs:
67 <class 'int'>
对于任意索引,我知道该怎么做:
x = b'\x41\x42\x43'
i = 2 # assume here a valid index in reference to list length
y = x[i:i+1]
print (y, type(y))
# outputs:
b'C' <class 'bytes'>
也许我可以计算列表长度,然后指向一个绝对长度为 1 的数字,而不是相对于列表结尾。
但是,有没有更优雅的方法来做到这一点? (即类似于简单的 [-1])我也无法想象如何从列表末尾反向调整 [i:i+1] 原则。

最佳答案

我认为您感兴趣的方法有多种:

someBytes[-1:]
编辑:我只是随机决定详细说明正在发生的事情以及为什么会这样。 bytes 对象是一个不可变的任意内存缓冲区,因此 bytes 对象的单个元素是一个字节,最好用 int 表示。这就是 someBytes[-1] 将是缓冲区中最后一个 int 的原因。无论出于何种原因(模式匹配、处理 ascii 数据而不是转换为字符串),当您使用像字符串这样的字节对象时,这可能是违反直觉的,因为 python 中的字符串(或要学究的 str)表示文本数据的想法并且不依赖于任何特定的二进制编码(尽管它默认为 UTF-8)。所以“hello”的最后一个元素是“o”,它是一个字符串,因为python没有单一的char类型,只有长度为1的字符串。所以如果你把一个bytes对象当作一个内存缓冲区,你可能需要一个int,但如果你把它当作一个字符串,你想要一个长度为 1 的字节对象。所以这一行告诉 python 从最后一个元素返回字节对象的切片到字节对象的末尾,这导致切片长度只包含一个bytes 对象中的最后一个值和一个 bytes 对象的切片是一个 bytes 对象。

关于python - 如何从 Python 中的字节列表中获取最后一个字节项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65911511/

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