嗨,內建Arduino就有API可以做了,可以不用自己寫
然後
以下是測試
void setup() { // put your setup code here, to run once: Serial.begin(9600); byte msb=B01; byte lsb=B11; word w=word(msb,lsb);//B100000011 int result=int(w); Serial.println(result); }
其中Word和int只是有號無號差別,都是10進位了
8位合并16位或32位一般是用在串口或网络数据接口上,如果是我来做,会用个很巧妙的方式,指针
原理是下面这样的:
uint8_t a[2];
uint16_t *b;
a[0]=1;//高8位
a[1]=1;//低8位
b=a;
其中,*b就是合并后的16位数
实际使用时候这样写
uint8_t * buffer;
uint16_t * buffer_16;buffer = (uint8_t*)malloc(256);
buffer_16 = (uint16_t*)malloc(128);
.......//buffer按顺序赋值
buffer_16=buffer
这样,*buffer_16就是由8位两两合并得到的16位数据的数组
buffer_16的使用方法:
设个i等于0到127, *(buffer_16+i)就是数组里每个变量的值