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

Python 3.6中如何将十六进制数据转为可读文本并去除b前缀?

解决Python读取二进制文件后输出带b'...'的问题

你这段代码是从特定偏移量读取二进制数据,结果打印出的b'\x95\xdc\x00'是Python对bytes类型对象的默认表示——开头的b就是用来标识这是字节数据,不是字符串。要去掉这个b,核心是把bytes对象转换成字符串类型,这里给你两种实用的解决方法:

方法1:用decode()转换为字符串(推荐)

因为你读取的是非标准ASCII/UTF-8的字节,推荐用latin-1编码解码,它会把每个字节直接映射为对应的Unicode字符,不会出现解码报错:

cardPath = str(input("Enter card path: "))
print("Card name is: ", end="")
with open(cardPath, "rb+") as f:
    f.seek(0x00000042)
    uName = f.read(3)
# 用latin-1解码字节为字符串
print(uName.decode('latin-1'))

如果你的卡片数据有指定编码(比如UTF-16),可以替换成对应编码,比如uName.decode('utf-16-le')(小端字节序),根据实际情况调整即可。

方法2:直接格式化输出(仅视觉上移除标记)

如果只是想在打印时去掉b和引号,不需要实际转换为字符串,可以用repr()配合切片:

cardPath = str(input("Enter card path: "))
print("Card name is: ", end="")
with open(cardPath, "rb+") as f:
    f.seek(0x00000042)
    uName = f.read(3)
# 截取repr结果中去掉开头的b'和结尾的'
print(repr(uName)[2:-1])

这种方法只是修改了输出的显示形式,uName本身还是bytes类型,适合只需要临时调整打印效果的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:22:01