如何将数字分成 1 字节块以在 C++ 中通过串行蓝牙发送
How to divide a number into 1 byte chunks to be sent through serial bluetooth in c++
我想通过串行蓝牙将数字从 Arduino 发送到 Android 应用程序。
我使用以下 C++ 代码成功发送了 1 个字节:
int number = 255;
SerialBT.write((uint8_t*)&number,1);
SerialBT.flush();
这很好用,但由于 Arduino 不接受 int16 或任何其他大于 1 字节的指针,我需要将数字“分块”到 8 位部分,并一次发送每个“分块”。
例如,如果我需要发送数字“725”,二进制为 10 1101 0101,我需要发送 2 个字节:
如何将一个数字分成“8 位块”?
类似于:
uint16_t number = 1000;
uint8_t lByte = number & 0b11111111;
uint8_t hByte = number >> 8;
还有 lowByte()
和 highByte()
函数可用,但我不知道它们的确切行为。
但为什么不使用 SerialBT.print()
或 SerialBT.println()
并将收到的内容转换为数字呢?
我想通过串行蓝牙将数字从 Arduino 发送到 Android 应用程序。
我使用以下 C++ 代码成功发送了 1 个字节:
int number = 255;
SerialBT.write((uint8_t*)&number,1);
SerialBT.flush();
这很好用,但由于 Arduino 不接受 int16 或任何其他大于 1 字节的指针,我需要将数字“分块”到 8 位部分,并一次发送每个“分块”。
例如,如果我需要发送数字“725”,二进制为 10 1101 0101,我需要发送 2 个字节:
如何将一个数字分成“8 位块”?
类似于:
uint16_t number = 1000;
uint8_t lByte = number & 0b11111111;
uint8_t hByte = number >> 8;
还有 lowByte()
和 highByte()
函数可用,但我不知道它们的确切行为。
但为什么不使用 SerialBT.print()
或 SerialBT.println()
并将收到的内容转换为数字呢?