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

Python中int转chr操作在循环、脚本与REPL中表现不一致

问题原因

你遇到的REPL与脚本/for循环输出不一致、字符显示不全的问题,本质是不可见字符的不同展示规则导致的,转换逻辑本身没有丢失内容:

  1. 你数组中的151(0x97)、131(0x83)、135(0x87)属于Unicode C1控制字符区间(0x80~0x9F),这类字符没有可打印的字形,终端渲染时会默认忽略。
  2. REPL环境下直接输出字符串时,默认调用的是对象的__repr__方法,会将不可见字符转为\xXX格式的转义序列显示,所以你能看到完整的字符串结构。
  3. print函数以及脚本直接输出时,调用的是对象的__str__方法,会将原始字符直接交给终端渲染,因此控制字符不会被显示,你只能看到中间三个可打印字符h、Ø、<。

解决方法

场景1:需要将整数数组转为字节串(最常用场景)

直接使用Python内置的bytes()构造函数即可,不需要经过字符转换,能完整保留所有原始数值:

arr = [151, 131, 104, 216, 60, 135]
byte_data = bytes(arr)
# 得到结果:b'\x97\x83h\xd8<\x87'

如果需要把字节串转为可安全打印的十六进制字符串,调用hex()方法即可:

print(byte_data.hex())
# 输出:978368d83c87

场景2:确实需要转为字符串,且要完整显示所有内容

使用repr()函数获取字符串的可打印表示,即可得到和REPL输出一致的结果:

arr = [151, 131, 104, 216, 60, 135]
str_data = ''.join(map(chr, arr))
print(repr(str_data))
# 输出:'\x97\x83hØ<\x87'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:24:02