Arduino Serial.read()到int

Arduino Serial.read()到int,arduino,serial-port,Arduino,Serial Port,当串行数据以字节为单位读入int(它似乎没有被转换成int),然后测试它是否与“1”相同时,这里到底发生了什么?它为什么有效?if如何返回true?“1”和“1”有什么区别(它们不是都是字符串吗) 读取单个值,并将其存储在number中。将该值与字符“1”进行比较。 在ASCII中,字符“1”的十进制值为49 如果作者将number声明为char(甚至byte),而不是int,我想这个例子会更清楚。我假设read()只返回8位值 对于您的最后一个问题:“这是一个字符串”,但“z”是一个单个字符。

当串行数据以字节为单位读入int(它似乎没有被转换成int),然后测试它是否与“1”相同时,这里到底发生了什么?它为什么有效?if如何返回true?“1”和“1”有什么区别(它们不是都是字符串吗)


读取单个值,并将其存储在
number
中。将该值与字符“1”进行比较。 在ASCII中,字符“1”的十进制值为49

如果作者将
number
声明为
char
(甚至
byte
),而不是
int
,我想这个例子会更清楚。我假设
read()
只返回8位值


对于您的最后一个问题:“这是一个字符串”,但“z”是一个单个字符。

学习C。它不是python。@非常感谢您的有用评论!我有点理解这一点,但似乎仍然有一个额外的转换发生在您可能期望的地方(在
read()
行中),而在不应该发生的地方(在
if()
行中)。无论如何,我已经通过使用
.readString()
解决/简化了我的问题。谢谢。如果您使用
.readString()
简化了您的问题,那么您应该真正了解C语言中的字符表示法,否则您将再次遇到此问题。@TheSalion我来看看。再次感谢。
SoftwareSerial bluetooth(2, 3);

void loop()
{
  if (bluetooth.available())
  {
    int number = bluetooth.read();

    //how is number (49 in bytes) identical to '1'
    if (number == '1')
    {
      Serial.print(number);
      Serial.print(" : ");
      Serial.println("on");
    }
  }
}