Python实现用户输入转ASCII并在字符间插入NULL的问题求解
解决方案
核心实现逻辑
你需要的NULL字符对应的ASCII字节为b'\x00',处理时需先把输入字符串的每个字符单独转成单字节ASCII,再用b'\x00'拼接所有字节即可。
核心处理函数
def str_to_null_sep_ascii(input_str: str) -> bytes: # 校验是否为ASCII字符 if not input_str.isascii(): raise ValueError("输入包含非ASCII字符,无法完成转换") # 每个字符单独转ASCII字节 char_byte_list = [c.encode('ascii') for c in input_str] # 用NULL字节拼接 return b'\x00'.join(char_byte_list)
效果验证
输入"111"时调用函数,返回结果为b'1\x001\x001',转换为十进制字节序列为[49, 0, 49, 0, 49],完全匹配预期输出。
完整需求适配代码
适配双输入、二进制文件查找替换场景的完整代码如下:
def str_to_null_sep_ascii(input_str: str) -> bytes: if not input_str.isascii(): raise ValueError("输入包含非ASCII字符,无法完成转换") char_byte_list = [c.encode('ascii') for c in input_str] return b'\x00'.join(char_byte_list) # 获取用户输入 search_target = input("请输入要搜索的数字: ") replace_value = input("请输入替换后的数字: ") # 转换为要求的格式 search_bytes = str_to_null_sep_ascii(search_target) replace_bytes = str_to_null_sep_ascii(replace_value) # 二进制文件查找替换逻辑 with open("你的目标文件路径", "rb") as f: file_content = f.read() new_content = file_content.replace(search_bytes, replace_bytes) with open("你的目标文件路径", "wb") as f: f.write(new_content)
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

