【发布时间】:2015-05-21 03:35:28
【问题描述】:
我有这个代码:
String c = String(BTLEserial.read());
char relevant = c.charAt(0);
Serial.println(relevant);
其中BTLEserial.read() 返回类型Int。我将其转换为第一行中的String,以便我可以在下一行使用charAt 函数。
当我发送我的蓝牙“0000”时,我的println(relevant) 打印4。
我做了一个测试println()语句来打印c的值,发现当BTLEserial.read()为0000时它的值竟然是48。这告诉我,当我将Int 值BTLEserial.read() 更改为字符串c 时,我遇到了转换问题。
这里发生了什么,将BTLEserial.read() 转换为类型String 的正确方法是什么?
【问题讨论】:
-
为什么您确信您看到的“疯狂整数值”不是从蓝牙读取的第一个字符?请提供更多详细信息和示例输出...
-
发送到我的蓝牙的字符串的第一个字符是 0,Serial.println() 行打印的字符是 8。
-
从一个数字构造一个字符串会产生一个包含该数字的 ASCII 表示的字符串。 正如文档所说,所以你的构造是正确的。
-
您将
charAt(1)更改(编辑3)为charAt(0)并且仍然看到相同的输出,这非常令人困惑。请问String.charAt函数现在是如何工作的?