Arduino int 到字符串的转换
Arduino int to String conversion
我有这个代码:
String c = String(BTLEserial.read());
char relevant = c.charAt(0);
Serial.println(relevant);
其中 BTLEserial.read()
returns 输入 Int
。我在第一行将其转换为 String
,以便我可以在下一行中使用 charAt
函数。
当我发送蓝牙“0000”时,我的 println(relevant)
打印 4
。
我做了一个测试println()语句来打印c的值,发现它在BTLEserial.read()为0000
时的值竟然是48
。这告诉我,当我将 Int
值 BTLEserial.read()
更改为字符串 c
时,我遇到了转换问题。
这里发生了什么,将 BTLEserial.read()
转换为类型 String
的正确方法是什么?
难道你的 String
对象的第一个字符在索引 0 处?所以实际上,您正在读取字符串 后面 的一个字符(它不包含 the docs 的空字符)。
一个方便的 String 实现应该抛出异常或至少警告您正在读取越界。但是在 Arduino 上你需要自己验证你的边界检查(嘿,它是嵌入式的)。
I made a test println() statement to print the value of c, and found that its value when BTLEserial.read() is 0000
turns out to be 48
.
不足为奇。 "0" 的 ASCII 值为 48.
Adafruit_BLE_UART::read()
returns的"int"是最近收到的字节;如果你想接收多个字节,例如字符串“0000”,那么你将需要多次调用它,每次都将字符添加到缓冲区。
我有这个代码:
String c = String(BTLEserial.read());
char relevant = c.charAt(0);
Serial.println(relevant);
其中 BTLEserial.read()
returns 输入 Int
。我在第一行将其转换为 String
,以便我可以在下一行中使用 charAt
函数。
当我发送蓝牙“0000”时,我的 println(relevant)
打印 4
。
我做了一个测试println()语句来打印c的值,发现它在BTLEserial.read()为0000
时的值竟然是48
。这告诉我,当我将 Int
值 BTLEserial.read()
更改为字符串 c
时,我遇到了转换问题。
这里发生了什么,将 BTLEserial.read()
转换为类型 String
的正确方法是什么?
难道你的 String
对象的第一个字符在索引 0 处?所以实际上,您正在读取字符串 后面 的一个字符(它不包含 the docs 的空字符)。
一个方便的 String 实现应该抛出异常或至少警告您正在读取越界。但是在 Arduino 上你需要自己验证你的边界检查(嘿,它是嵌入式的)。
I made a test println() statement to print the value of c, and found that its value when BTLEserial.read() is
0000
turns out to be48
.
不足为奇。 "0" 的 ASCII 值为 48.
Adafruit_BLE_UART::read()
returns的"int"是最近收到的字节;如果你想接收多个字节,例如字符串“0000”,那么你将需要多次调用它,每次都将字符添加到缓冲区。