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

Python中如何将已定义字符串等价转换为b""格式字节串

普通字符串转字节串的正确方法

直接调用bytes(string)无法得到预期结果,是因为Python3中字符串转字节串的构造逻辑要求显式指定编码规则,不会自动匹配b前缀字面量的解析逻辑,根据目标结果分两种场景处理:

  • 场景1:需要得到和b"0x340xEF"字面量完全等价的字节串(即字节内容对应'0'、'x'、'3'、'4'、'0'、'x'、'E'、'F'的ASCII编码值)
    直接对字符串指定ASCII/UTF-8编码即可,两种写法效果完全一致:
    string = "0x340xEF" # 已定义的普通字符串
    # 写法1
    byte_result = string.encode("utf-8")
    # 写法2
    byte_result = bytes(string, encoding="utf-8")
    
    执行后byte_result == b"0x340xEF"的判断结果为True,和直接用b前缀定义的字节串完全等价。
  • 场景2:需要把字符串中0x标记的十六进制值解析为对应字节(即把"0x340xEF"解析为0x34、0xEF两个字节)
    先清理掉字符串里的0x标记得到连续十六进制串,再用十六进制转字节的方法处理:
    import binascii
    string = "0x340xEF"
    hex_str = string.replace("0x", "")
    byte_result = binascii.unhexlify(hex_str)
    
    执行后byte_result的值为b'4\xef',对应字节值为[0x34, 0xEF]。

注意:如果字符串里包含非ASCII范围的字符,需要根据实际存储的编码格式替换encode的参数,比如GBK编码场景下传入encoding="gbk"即可。

内容的提问来源于stack exchange,提问作者Dr. Ernesto Chinchilla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:06:23