我正在从一个包含字典的二进制文件中读取数据,如下所示:
a_dict =
{'8a50b9f75b57104d89b58305d96045df':[b'\x94*\x08\x9d\xd8', 0, 1, 4, 6, 7],
'bff92f621cc65e2103305343a943c9a8':[b'\x85*\xe4\xf0\xd7', 2, 3, 5, 8, 9]}
其中二进制码是文件内容本身,其余列表项是索引。因此,对于此特定情况,输出应如下所示(不带两个空格):
(1st hash) (1st hash) (2nd hash) (2nd hash)
\x94*\x08\x9d\xd8 \x94*\x08\x9d\xd8 \x85*\xe4\xf0\xd7 \x85*\xe4\xf0\xd7 ...
我在这方面遇到了一些麻烦,这个网站上的其他例子并不完全是我正在寻找的(我确信它们就在那里,但可能我搜索错了关键字)。
我的代码如下:
with open(fname, 'rb') as f:
a_dict = pickle.load(f)
for value in a_dict.values():
print(value[1:])
这为我提供了重建文件所需的两个列表[0, 1, 4]
和[2, 3, 5]
。我需要一种方法来遍历这些列表(按0,1,2,3,...)并连接相应的字节。
发布于 2018-08-05 07:36:10
假设您需要对cat进行欺骗的字节是每个列表的第一个元素,那么:
with open(fname, 'rb') as f:
bytes_list = []
a_dict = pickle.load(f)
for values_list in a_dict.values():
file_bytes = values_list.pop(0)
for Val in values_list:
bytes_list.append((val, file_bytes[Val]))
Result = [byt for Val, byt in sorted(bytes_list, key=lambda x: x[1])]
对于可能的编译错误,我很抱歉,我正在打电话
https://stackoverflow.com/questions/51690094
复制相似问题