[英]Python - rewrite byte array with 0x00 for each hex byte read in
[英]Python convert hex value from 0x00 to 0x0
我有 2 个十六进制数字列表,我需要检查一个列表的每个项目是否存在于第二个列表中,如果存在则删除它。 问题是,在第一个列表中,十六进制数字的格式为:0x00(如果它们 < 0x10),第二个列表中的十六进制数字格式为 0x0。 运行代码时,它不会删除第一个列表 = 0x00 和第二个列表 = 0x0 的项目,我希望在这种情况下,该项目将被删除
diff = second_hex_list
for item in first_hex_list:
if item in second_hex_list:
diff.remove(item)
只需将它们转换为int
进行比较。 您有第二个错误,您没有在进行更改之前复制列表(它应该是diff = second_hex_list[:]
)。 但是列表理解是过滤这个的更好方法。
second = set(int(item, 16) for item in second_hex_list)
diff = [item for item in first_hex_list if int(item, 16) not in second]
您可以在搜索之前转换项目以匹配第二个列表的格式:
diff = second_hex_list
for item in first_hex_list:
if item.replace("0x0","0x") in second_hex_list:
diff.remove(item)
这将涵盖您描述的特定问题,但可能不适用于实际数据中的所有情况(因此需要您提供有意义的输入和预期输出示例)。
请注意,如果您的列表非常大,您可能希望使用一个集合来有效地进行过滤:
first_hex_set = { item.replace("0x0","0x") for item in first_hex_list }
diff = [item for item in second_hex_list if item not in first_hex_set ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.