日志
short、int、float转换为16进制。16进制转换为float类型
2016-01-20 18:05
void DbgBox::slot_ControlCmdYK_YT(QString content)
{ QString BWCmdtype = content.mid(0,content.indexOf(",")); QStringList baowenList = content.split(","); if(baowenList.count()<5) { QMessageBox::information(this,"提示","数据内容缺失"); return; } QByteArray array; //报文头 array.append(bwHead_EB); array.append(bwHead_68); array.append(bwHead_EB); array.append(bwHead_68); //报文长度 array.append((char)0); array.append(0x12); //报文类型 if(BWCmdtype == "3") array.append(cmd_YK); else array.append(cmd_YT); //可变结构限定词 array.append((char)0); //非连续 array.append(0x01);//1条数据使用 //传送原因 array.append(Reason_3);//突发 //-------------报文内容----------------- //(short转换为四字节的16进制) short TDID = baowenList.at(1).toShort(); short TDID1 = TDID & 0xFF00; char a = TDID1>>8; array.append(a); TDID1 = TDID & 0x00FF; char b = TDID1; array.append(b); //(int转换为四字节的16进制) int DPU = baowenList.at(2).toInt(); int dpu2 = DPU & 0xFF000000; char c = dpu2>>24; array.append(c); dpu2 = DPU & 0x00FF0000; c = dpu2>>16; array.append(c); dpu2 = DPU & 0x0000FF00; c = dpu2>>8; array.append(c); dpu2 = DPU & 0x000000FF; c = dpu2; array.append(c); //如果int只占用一个字节则可以直接转 array.append((char)baowenList.at(4).toInt()); //值(float转换为四字节的16进制) float val = baowenList.at(4).toFloat(); unsigned char tmp[4]; memset(tmp,NULL,sizeof(tmp)); memcpy(tmp,&val,sizeof(val)); array.append(tmp[0]); array.append(tmp[1]); array.append(tmp[2]); array.append(tmp[3]); //报文结束 array.append(bwHead_EB); array.append(bwEnd_16); } //16进制转换为float QByteArray content; unsigned char g = content.mid(42,1).at(0); unsigned char h = content.mid(43,1).at(0); unsigned char i = content.mid(44,1).at(0); unsigned char j = content.mid(45,1).at(0); unsigned char tmp[4]; memset(tmp,0,sizeof(tmp)); tmp[0]=g; tmp[1]=h; tmp[2]=i; tmp[3]=j; float aa=0.0f; memcpy(&aa,tmp,sizeof(aa)); |