Python中如何对单个8位二进制字符串做XOR运算得到所有可能组合
实现思路与代码
你需要的所有XOR运算组合,本质是将输入的8位二进制字符串对应的单字节值,和0x00到0xff共256种可能的8位值逐一做异或运算,输出对应结果即可,实现逻辑非常简单:
完整可运行代码
def get_all_xor_combinations(input_bin: str): # 校验输入合法性 if len(input_bin) != 8 or not all(c in ("0", "1") for c in input_bin): raise ValueError("输入必须为仅包含0/1的8位二进制字符串") # 将输入转为整数方便运算 input_byte = int(input_bin, 2) result_list = [] # 遍历所有8位可能值做异或 for key in range(256): xor_result = input_byte ^ key # 异或结果转为补前导零的8位二进制字符串,需要十六进制的话改成f"{xor_result:02x}"即可 result_bin = f"{xor_result:08b}" # 元组存储格式:(异或用的key二进制值, 异或结果二进制值) result_list.append((f"{key:08b}", result_bin)) return result_list # 测试示例 if __name__ == "__main__": test_input = "10101010" all_combinations = get_all_xor_combinations(test_input) # 打印前5组示例,需要全部输出直接遍历all_combinations即可 for key, res in all_combinations[:5]: print(f"{test_input} XOR {key} = {res}")
格式调整说明
- 如果不需要存储参与运算的key,只需要最终异或结果,直接收集
result_bin到列表即可 - 如果需要输出整数格式的结果,不需要做二进制转换,直接存
xor_result即可 - 输入如果带
0b前缀,int()方法会自动识别处理,只需要确保去掉前缀后是8位即可
所有运算组合一共256组,符合8位单字节的所有取值范围,没有遗漏情况
内容的提问来源于stack exchange,提问作者DyingInCS
相关产品推荐
相关产品推荐

