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

Python中如何将Sim800L GSM模块输出的十六进制串转为Unicode?

解决GSM模块Sim800L返回的十六进制字符串转Unicode问题

你拿到的模块返回值,本质是把多个Unicode码点的十六进制值连在一起,用空格分组。比如0633064406270645其实对应四个Unicode码点:0633、0644、0627、0645,直接加\u前缀的方法行不通——因为Python会把转义符当成普通字符处理,生成带双反斜杠的无效字符串。

直接用下面的代码就能解决:

# GSM模块返回的原始字符串
raw_input = "0633064406270645 06280647 0647064506af06cc"

output = []
# 按空格分割成各组十六进制串
for chunk in raw_input.split():
    # 每四位截取一个码点的十六进制值
    for i in range(0, len(chunk), 4):
        hex_part = chunk[i:i+4]
        # 转成十进制整数后再转Unicode字符
        output.append(chr(int(hex_part, 16)))

# 拼接成最终文本
final_text = ''.join(output)
print(final_text)  # 输出结果:سلام به همگی

关键逻辑说明

  1. 先把原始字符串按空格拆分成多个连续的十六进制块
  2. 每个块里的字符每四位一组,对应一个Unicode码点的十六进制表示
  3. 通过int(hex_part, 16)将十六进制字符串转成整数,再用chr()函数映射为对应的Unicode字符
  4. 最后把所有字符拼接起来,得到目标文本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 06:56:03