这是获取二进制数据字节的唯一方法吗?
index = 40
data = afile.read()
byte = data[index:index+1] # <- here
如果我使用byte = data[index]
,则会抛出错误:
TypeError: 'int' does not support the buffer interface
答案 0 :(得分:1)
来自bytes
documentation:
由于字节对象是整数序列(类似于元组),对于字节对象 b ,
b[0]
将是一个整数,而b[0:1]
将是一个字节长度为1的对象。(这与文本字符串形成对比,其中索引和切片都将生成长度为1的字符串。)
因此byte = data[index]
为byte
分配一个整数值 - 正如您的错误消息所指出的那样,它不支持缓冲区接口。
你可以而不是byte = data[index:index+1]
,写下这个:
byte = bytes([data[index]])
...依赖于bytes
构造函数,如果传递一个序列(注意data[index]
周围的括号),将使用它创建一个bytes
对象 - 但是& #39;它实际上不再具有可读性,而且速度要慢得多(在我的机器上使用Python 3.4的速度提高了六倍)。