Python 我可以从另一个字节对象获得长度为1的字节对象,而无需切片吗?
这是获取二进制数据字节的唯一方法吗Python 我可以从另一个字节对象获得长度为1的字节对象,而无需切片吗?,python,string,python-3.x,byte,Python,String,Python 3.x,Byte,这是获取二进制数据字节的唯一方法吗 index = 40 data = afile.read() byte = data[index:index+1] # <- here 从字节中: 由于字节对象是整数序列(类似于元组),因此对于字节对象b,b[0]将是整数,而b[0:1]将是长度为1的字节对象。(这与文本字符串形成对比,在文本字符串中,索引和切片都将生成长度为1的字符串) 因此byte=data[index]为byte分配一个整数值,正如错误消息所指出的,它不支持缓冲区接口 您可以编写
index = 40
data = afile.read()
byte = data[index:index+1] # <- here
从
字节中
:
由于字节对象是整数序列(类似于元组),因此对于字节对象b,b[0]
将是整数,而b[0:1]
将是长度为1的字节对象。(这与文本字符串形成对比,在文本字符串中,索引和切片都将生成长度为1的字符串)
因此byte=data[index]
为byte
分配一个整数值,正如错误消息所指出的,它不支持缓冲区接口
您可以编写以下内容,而不是byte=data[index:index+1]
:
byte = bytes([data[index]])
。。。依赖于这样一个事实,字节
构造函数,如果传递了一个序列(注意数据[index]
周围的括号),将使用它来创建一个字节
对象-但这实际上不再具有可读性,并且速度明显较慢(在我使用Python 3.4的机器上是6倍)
byte = bytes([data[index]])