蚂蚁power的个人主页

http://www.qtcn.org/bbs/u/163171  [收藏] [复制]

蚂蚁power

  • 6

    关注

  • 2

    粉丝

  • 22

    访客

  • 等级:新手上路
  • 总积分:74
  • 男,2011-06-12

最后登录:2018-06-06

更多资料

日志

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));


分类:默认分类|回复:0|浏览:667|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:05-18 00:29
©2005-2016 QTCN开发网 版权所有 Gzip disabled