我有一个名为headers的列表列表。每个子列表中包含的数据都是二进制的。
标题[5] = ['t \ x04 \ x1e \ x01I \ x1a \ t \ x11 \ x02Rz \ x7fI \ x00H:\ x00 \ x1a \ x13I \ x1aOEH \ x0f \ x1d \ rS \ x04']
当我有一个列表如l = [“hello”,1,22,“ex”]时,我可以使用l [0] [2]来访问元素'l'。
类似地,当我想访问列表头[5]中包含的二进制数据的第n个字节时,我得到一个列表索引超出范围错误。如何访问此列表标题中的第n个字节[5]?
我的目标是通过将文件拆分为'keysize'长度字节,从文件对象'text'中的给定二进制数据创建列表列表。
之后,我想将所有列表的第一个字节放入列表'nheads'中的新列表,将所有'head'列表中的第二个字节放入nheads,依此类推。
我的部分代码是:
parti = len(text)/keysize
headers = [[] for k in range(0, parti)]
nheads = [[] for k in range(0, parti)]
pcount = 0
for i in xrange(0,parti):
if (pcount < len(text)):
headers[i].append(text[i*keysize:(i+1)*keysize])
pcount += 1
else :
pcount += 1
print headers[5][2]
count = 0
for i in xrange(0,parti):
for j in xrange(0,parti):
if(count < len(text)):
nheads[i].append(headers[j][i])
count = count + 1
else:
count = count + 1
我得到的错误是:
utkarsh@utkarsh-Lenovo-G580:~/crypto$ python 6.py
['t\x04\x1e\x01I\x1a\t\x11\x02Rz\x7fI\x00H:\x00\x1a\x13I\x1aOEH\x0f\x1d\rS\x04']
Traceback (most recent call last):
File "6.py", line 65, in <module>
nheads[i].append(headers[j][i])
IndexError: list index out of range
utkarsh@utkarsh-Lenovo-G580:~/crypto$ python 6.py
Traceback (most recent call last):
File "6.py", line 60, in <module>
print headers[5][2]
IndexError: list index out of range
答案 0 :(得分:0)
两种可能性: 1.头部列表未正确初始化,因此其长度小于6。 2. n大于头部长度[5]。 尝试打印(str(head [5]))。如果发生错误,则情况1,否则情况2。 也按顺序尝试len(head)和len(head [5])。
答案 1 :(得分:0)
由于列表是列表列表,因此您使用的第二个元素选择器是选择包含列表中的元素,而不是二进制字符串中的字节元素。
尝试&#34;头[5] [0] [n]&#34;而不是&#34; head [5] [n]&#34;。