Arduino int to String转换

时间:2015-05-21 03:35:29

标签: c++ string arduino int

我有这段代码:

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。这告诉我,当我将IntBTLEserial.read()更改为字符串c时,我遇到了转换问题。

这里发生了什么,以及将BTLEserial.read()转换为String类型的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

  

我做了一个测试println()语句来打印c的值,发现它在BTLEserial.read()为0000时的值为48

不足为奇。 ASCII值“0”为48。

Adafruit_BLE_UART::read()返回的“int”是收到的最新字节;如果你想要接收多个字节,例如字符串“0000”,那么你需要多次调用它,每次都将字符添加到缓冲区。

答案 1 :(得分:0)

你的String对象的第一个字符是否在索引0处?实际上,你正在读取后面的一个字符(它不包含the docs的空字符。)

一个方便的String实现应该抛出一个异常,或者至少警告你你正在读出界限。但是在Arduino上你需要验证自己的界限 - 自己检查(嘿,它是嵌入式的)。