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

如何将用户输入转为十六进制并在各字符对应值间插入NULL字符

问题根因

你原有代码的核心错误有两个:

  • 直接对hexlify返回的bytes对象用str()转换,会把bytes的标识b'和尾部的'也当成普通字符串内容处理,导致后续拼接混入多余字符
  • 对拼接后的结果重复做了hexlify转换,完全偏离了需求目标
正确实现代码
import binascii

def convert_content(input_bytes: bytes) -> bytes:
    # 先把输入转成纯十六进制字符串(不带b''前缀)
    hex_str = binascii.hexlify(input_bytes).decode('ascii')
    # 每两个字符为一组(对应一个原字符的十六进制值)
    hex_chunks = [hex_str[i:i+2] for i in range(0, len(hex_str), 2)]
    # 用00拼接所有分组
    result_str = '00'.join(hex_chunks)
    # 转成bytes格式返回
    return result_str.encode('ascii')

# 测试示例
content5 = rb"111"
res = convert_content(content5)
print(res)

运行输出:

b'3100310031'
实现逻辑说明
  • 第一步用hexlify把原字节串转成十六进制表示的bytes,再解码为纯ASCII字符串,比如输入rb"111"这一步得到字符串"313131"
  • 第二步按每两位分割字符串,得到["31", "31", "31"],每一项对应原字节串中一个字符的十六进制值
  • 第三步用00作为分隔符拼接所有分组,得到"3100310031"
  • 最后编码为bytes即可得到预期输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:36:04