c++ - 如何在C++中将数字划分为1个字节的 block 以通过串行蓝牙发送

标签 c++ arduino bluetooth binary byte

我想通过串行蓝牙从Arduino向Android应用程序发送一个数字。
我设法在C++中使用以下代码发送了1个字节:

int number = 255;          
SerialBT.write((uint8_t*)&number,1);
SerialBT.flush();
这可以正常工作,但是由于Arduino不允许int16或任何其他大于1字节的指针,因此我需要将数字“压缩”为8位部分,并一次发送每个“压缩”。
例如,如果我需要发送数字“725”(二进制为10 1101 0101),则需要发送2个字节:
Example division of binary 725 into two bytes
如何将数字分为“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/

相关文章:

c++ - 将函数及其实现从主文件移动到不同的文件(.hpp 和 .cpp)时,性能会受到很大影响

android - 通过蓝牙发送文件

ios - 通过蓝牙将 GPS 位置发送到 iOS 设备

c++ - 重载 write(int) 的调用不明确

c - 如何在c中从char*访问char[]?

Python 和蓝牙/OBEX

c++ - 检测图像中的切口/半圆

c++ - 为什么 CoCreateInstance 可以在完全相同的上下文中返回两个不同的 HRESULT?

c++ - 通过c++程序调用c(编译文件)

c - ESP8266 Arduino 请求内容编码