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

Python:如何将Unicode编码的二进制变量字符串转为Unicode字符

方法1:用ast.literal_eval(最简便安全)

Python的ast模块提供的literal_eval可以安全解析Python字面量,包括bytes对象。直接将输入的字符串传入该函数,就能得到对应的bytes对象,再解码为Unicode字符即可:

import ast

while True:
    input_str = input("Enter binary Unicode string or 'exit' to exit: ")
    if input_str == 'exit':
        break
    try:
        byte_data = ast.literal_eval(input_str)
        print(byte_data.decode('utf-8'))
    except Exception as e:
        print(f"Error: {e}")

测试输入b'\xe1\x80\xad',就能输出对应的缅甸语字符ိ。

方法2:手动处理字符串(无需额外模块)

如果不想引入ast模块,可以手动剥离字符串的b'前缀和'后缀,提取纯十六进制部分后转换:

while True:
    input_str = input("Enter binary Unicode string or 'exit' to exit: ")
    if input_str == 'exit':
        break
    # 校验输入格式并剥离多余字符
    if input_str.startswith("b'") and input_str.endswith("'"):
        hex_part = input_str[2:-1].replace(r'\x', '')
        try:
            byte_data = bytes.fromhex(hex_part)
            print(byte_data.decode('utf-8'))
        except ValueError as e:
            print(f"Invalid hex string: {e}")
    else:
        print("Input format should be like b'\\xe1\\x80\\xad'")

原方法报错原因

你之前尝试int(binary, 16)失败,是因为输入字符串包含b'、'和\x这些非十六进制字符,无法直接转换为整数。必须先剔除这些无关内容,只保留纯十六进制序列才能进行转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:20:05