You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何对二进制文件读取的bytes字节块做XOR异或运算

Python字节逐字节异或运算实现说明

Python中用于执行按位XOR异或运算的原生运算符为^。

针对读取到的bytes类型字节块,要实现和单字节十六进制值逐字节异或,可参考如下实现逻辑:

  • 基础逐字节计算方式
    bytes对象迭代时输出的每个元素都是0~255范围的整数,对应单个字节的数值,直接用^和目标异或值运算后,重新转成bytes即可得到结果,示例代码:
    # block_data为file.read(block_size)读取得到的bytes类型数据
    block_data = file.read(block_size)
    # 定义异或用的单字节值,\x0A对应十六进制0x0A,即十进制10
    xor_byte = 0x0A
    xor_result = bytes(byte_val ^ xor_byte for byte_val in block_data)
    
  • 大块数据高效处理方式
    如果处理的文件块较大,可提前预生成256位的异或映射表,调用bytes.translate()方法完成计算,执行效率远高于逐字节遍历,示例代码:
    xor_byte = 0x0A
    # 预生成所有单字节值和key异或后的映射表
    trans_table = bytes(i ^ xor_byte for i in range(256))
    xor_result = block_data.translate(trans_table)
    

注意:如果你的异或值是写为b'\x0A'格式的单字节bytes对象,不能直接参与^运算,需要先取其整数值:xor_byte = b'\x0A'[0],否则会触发类型不匹配错误。

内容的提问来源于stack exchange,提问作者johnnym

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:22:47