比如这样一个通信协议 如何进行编码并发送
&0xFF 就是和1111 1111进行与运算如果这个数本身只有八位小于255那么与完以后就是他本身
如果这个数大于255就可以把他低地址截断
如果这个数在255到65535之间还要存放高地址 则需要把这个数右移8位把高地址移过去,然后再和&0xFF与运算截取高八位,之后再看需要是高八位在前还是第八位在前这里是低八位在前
void MainWindow::sendInfomation(int Mx,int Mq){
QByteArray datagram ;//定义一个QByteArray
QString pad_value=(ui->setsub->text());
double pad_value_2=pad_value.toDouble()*2;
int pad_value_3=qRound(pad_value_2);//如果要使用变量表示则需要定义为int类型
datagram[0] = 0xD1;
datagram[1] = 0xA2;
datagram[2] = 0xFF;
datagram[3] = 0x20;
datagram[4] = 0x62;
datagram[5] = 0x4A;
datagram[6] = 0x00;
datagram[7] = pad_value_3&0xFF;
datagram[8] = 0xDA;
datagram[9] = 0xC1;
datagram[10]= 0x00;
datagram[11]= 0x00;
datagram[12]= (Mx>>8)&0xFF;
datagram[13]= Mx&0xFF;
datagram[14]= 0xDA;
datagram[15]= 0xC2;
datagram[16]= 0x00;
datagram[17]= 0x00;
datagram[18]= 0x66;
datagram[19]= 0x66;
datagram[20]= 0xDA;
datagram[21]= 0xC3;
datagram[22]= 0x00;
datagram[23]= 0x00;
datagram[24]= 0x66;
datagram[25]= 0x66;
datagram[26]= 0xDA;
datagram[27]= 0xC4;
datagram[28]= 0x00;
datagram[29]= 0x00;
datagram[30]= (Mq>>8)&0xFF;
datagram[31]= Mq&0xFF;
dataQbyte=datagram;//这里dataQbyte是一个全局变量先不用管
qDebug()<<datagram;
}