Qt 数字和字符处理总结

1. 四舍五入保留小数几位

  

 QString str="12.3456789";         
         double d1=str.toDouble();
         qDebug()<<"d1"<<d1;//12.3457
       
         QString str1=QString::number(d1,'f',3);//3 保留几位小数

         qDebug()<<"str1"<<str1;//12.346

2.

   

    QByteArray macAddress = QByteArray::fromHex("123456abcdef");

        qDebug()<<"macAddress:"<<macAddress.toHex(':');//12:34:56:ab:cd:ef

 

  QByteArray ba;
        ba.resize(3);
        ba[0]=0x7E;
        ba[1]=0x51;
        ba[2]=0x7E;
        qDebug()<<ba.toHex(' ');//7e 51 7e"

 

4.QString  -> char*

 #include<QTextCodec>

   QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QString  str="中国人民";
    char* ch;
   // QByteArray ba = str.toLatin1();
    QByteArray ba = str.toLocal8Bit();
    ch=ba.data();
    qDebug()<<ch;

 

5. char*-> QString 

  QString str;
    char *msg;
    str = QString::fromLocal8Bit(msg);

6.十进制转化二进制,指定位数,不够补零 

 int a=10;
 QString str = QString("%1").arg(a,8,2,QLatin1Char('0'));
 qDebug()<<"---->"<<str;
 //----> "00001010"

 7.无符号数转换有符合数,modbus读取数据16位时候,有什么需要是负数。原则是:最高位如果是1就是负数,然后取反,加1,添加负号,就是所要的负值。

int AgvProtocol::uintToInt(uint16_t ut)
{
     QString binaryStr=QString("%1").arg(ut,16,2,QLatin1Char('0'));
     qDebug()<<"modbus readbinaryStr:"<<binaryStr;
     if(binaryStr[0]=='1')
     {
         int len=binaryStr.length();
         int nDec=0;
         for(int i=0;i<len;i++){
             if(binaryStr[i]=='0'){
                int k=1;
                for(int j=0;j<len-i-1;j++)
                {
                    k=k*2;
                }
                nDec+=k;
             }
         }

         return -(nDec+1);

     }
     else {
         return ut;
     }
}

 

转载于:https://www.cnblogs.com/ike_li/p/4654682.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值