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

Python中实现XOR结果转ASCII:Hex处理脚本优化求助

解决XOR结果转ASCII的问题

没问题,我来帮你实现把XOR运算结果转换成ASCII值的需求!先梳理下你的原脚本逻辑,其实只需要在现有基础上添加一步核心转换:把异或后的十六进制值转成整数,再用chr()函数映射成对应的ASCII字符就可以了。

优化后的完整流程:

  • 接收用户输入字符串
  • 将字符串转成十六进制格式并拆分为两位一组(对应单个字符的十六进制编码)
  • 每组十六进制值和密钥0x3c执行XOR异或运算
  • 把异或后的整数结果转成ASCII字符,最后拼接成完整字符串

修改后的完整代码(兼容Python2):

import re

# 接收用户输入
string_input = raw_input()
# 直接用整数形式的密钥,避免重复转换
key = 0x3c

# 把输入字符串转成十六进制字符串
encodehex = string_input.encode("hex")
# 拆分每两位十六进制为一组(对应原字符串的单个字符)
hexsplit = re.findall('..', encodehex)

# 存储转换后的ASCII字符
ascii_result_list = []

for hex_str in hexsplit:
    # 将十六进制字符串转为整数
    char_hex_int = int(hex_str, 16)
    # 执行XOR异或运算
    xor_result_int = char_hex_int ^ key
    # 把整数转成对应的ASCII字符
    ascii_char = chr(xor_result_int)
    ascii_result_list.append(ascii_char)

# 拼接成最终的ASCII字符串
final_ascii_result = ''.join(ascii_result_list)

# 输出结果
print("原字符串的十六进制分组:", hexsplit)
print("与0x3c异或后的ASCII结果:", final_ascii_result)

关键说明:

  1. 简化密钥处理:直接把密钥0x3c定义为整数,不用每次都执行int(key,16)转换,更高效。
  2. ASCII转换核心:chr()函数会把0-127之间的整数直接映射为对应的ASCII字符,这就是你需要的核心操作。
  3. 代码优化:原脚本里的arrayofhex是重复转换十六进制字符串的冗余步骤,直接处理整数运算可以减少不必要的操作。

如果是用Python3的话,只需要把raw_input()改成input(),并且把string_input.encode("hex")替换为binascii.hexlify(string_input.encode()).decode()(需要先导入binascii模块)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:00:21