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

Arduino中字符串存储的ASCII值转整数异常问题咨询

问题分析与解决

你代码的核心问题是混淆了ASCII码的字符串形式和ASCII字符对应的整数值:

  • 你存储的"59"是字符串形式的数字,atoi()会直接把它解析成整数59,这是字符串本身代表的数值;
  • 但你想要的是把这个数值(注:整数2对应的ASCII码是十进制50,即十六进制0x32,你原注释里的"59"是笔误)作为ASCII码,转成对应的字符('2'),再得到这个字符代表的整数2。

修正后的代码

String a = "50"; // 整数2对应的ASCII值是十进制50(十六进制0x32)

// 1. 先把字符串转成ASCII码的整数
int ascii_code = atoi(a.c_str());
// 2. 将ASCII码转成对应的字符
char target_char = char(ascii_code);
// 3. 把字符转成对应的整数('0'的ASCII是48,用字符减'0'即可得到对应整数)
int num = target_char - '0';

Serial.println(num); // 此时输出结果为2

简化写法

如果不需要中间变量,也可以合并成一行:

String a = "50";
int num = char(atoi(a.c_str())) - '0';
Serial.println(num);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:15:42