我想通过串行蓝牙从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()
并将收到的内容转换为数字呢?
关于c++ - 如何在C++中将数字划分为1个字节的 block 以通过串行蓝牙发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65043766/