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)
关键说明:
- 简化密钥处理:直接把密钥
0x3c定义为整数,不用每次都执行int(key,16)转换,更高效。 - ASCII转换核心:
chr()函数会把0-127之间的整数直接映射为对应的ASCII字符,这就是你需要的核心操作。 - 代码优化:原脚本里的
arrayofhex是重复转换十六进制字符串的冗余步骤,直接处理整数运算可以减少不必要的操作。
如果是用Python3的话,只需要把raw_input()改成input(),并且把string_input.encode("hex")替换为binascii.hexlify(string_input.encode()).decode()(需要先导入binascii模块)。
内容的提问来源于stack exchange,提问作者Xozu
相关产品推荐
相关产品推荐

