如何将按指定规则生成的bytes还原为整数元组组成的列表
问题原因分析
你写的逆向代码存在两个核心问题:
- 变量拼写错误:你定义的切片变量是大写的
Z,但计算x值时误用了小写的z,导致读取的数值错误 - 逻辑冗余容易出错:通过整体转整数后移位的方式虽然理论可行,但不如直接拆分6字节块的前4位、后2位更直观不易错
正确实现代码
def bytes_to_tuple_list(b): res = [] # 每6字节对应一个(x,y)元组 for i in range(0, len(b), 6): chunk = b[i:i+6] # 前4字节大端转整数就是x x = int.from_bytes(chunk[:4], 'big') # 后2字节大端转整数就是y y = int.from_bytes(chunk[4:], 'big') res.append((x, y)) return res
额外说明
如果你原始数据是嵌套结构(比如你举例的多层列表/元组嵌套),你需要先记录原始结构中每个子序列的长度,把逆向得到的扁平元组列表按照记录的长度重新切分嵌套,就能完全还原原始结构。
内容的提问来源于stack exchange,提问作者lirongr1996
相关产品推荐
相关产品推荐

