lowByte()和highByte()函数有什么作用?

时间:2013-05-05 15:36:58

标签: binary arduino

我在Arduino中制作了这个小型实验程序,看看函数 lowByte() highByte() < / strong>工作。传递一个值时他们应该返回什么?     在串行监视器中输入字符“9”时,它将打印以下内容:

9 
0
218
255

那是怎么来的?此外,为输入的所有值打印最后2行。为什么会这样?

int i=12;

void setup()
{
 Serial.begin(9600); 
}

void loop()
{
if(Serial.available())
{
 i = Serial.read() - '0';  // conversion of character to number. eg, '9' becomes 9.
 Serial.print(lowByte(i)); // send the low byte
 Serial.print(highByte(i)); // send the high byte
}

}

4 个答案:

答案 0 :(得分:2)

如果您有这些数据:

10101011 11001101 // original

// HighByte() get:
10101011

// LowByte() get: 
11001101

答案 1 :(得分:0)

int是Arduino上的16位整数。因此,您将高低部分读作字节。

由于实际缓冲区为"9\n",因此第二位打印出“有趣”数字,原因是'0'减去了结果。

答案 2 :(得分:0)

Serial.print需要格式化为字节输出,如果这是你想看到的。

尝试:

Serial.print(lowByte, BYTE)

答案 3 :(得分:0)

除了Rafalenfs的回答之外,您是否应该提供更大的数据类型:

00000100 10101011 11001101 // original

// HighByte() will NOT return: 00000100, but will return:
10101011

// LowByte() will still return: 
11001101

Highbyte()返回第二个最低位(由文档https://www.arduino.cc/reference/en/language/functions/bits-and-bytes/highbyte/指定)