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

Python中字符与字节、十六进制转换异常问题解惑

字符、字节与十六进制互转的编码问题解析

问题出在你使用的默认编码格式上。Python中str.encode()默认采用UTF-8编码,而UTF-8是变长编码:对于Unicode码点在U+0080到U+07FF之间的字符(比如chr(140)对应的U+008C),会用2个字节来编码,所以你得到了b'\xc2\x8c'。

如果想要让0-255范围内的每个字符都对应单字节的字节串,你需要切换到Latin-1(ISO-8859-1)编码——这个编码的设计就是直接把Unicode码点0-255映射为单个字节,完全匹配你的预期。

具体操作示例

字符转字节/十六进制(单字节对应)

  • 字符转单字节:byte_character = chr(140).encode('latin-1'),结果为 b'\x8c'
  • 字符转十六进制:hex_character = chr(140).encode('latin-1').hex(),结果为 '8c'

反向转换

  • 十六进制转回字符:bytes.fromhex('8c').decode('latin-1'),得到chr(140)对应的字符
  • 字节转回字符:b'\x8c'.decode('latin-1'),同样得到目标字符

简单总结:UTF-8适合处理全范围的Unicode字符,而Latin-1是单字节编码,仅覆盖0-255的码点,根据你的实际需求选择对应的编码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:53:14