QByteArray详解

匿名 (未验证) 提交于 2019-12-03 00:22:01
QByteArray在串口通讯中经常被使用,有一定必要较为全面详细的对QByteArray进行阐述。本文通过以下几个部分加以介绍:

1. 初始化

2. 访问与赋值

3. 添加、删除、插入与替换操作

4. 查找与比较

5. 数据转换与处理

1 初始化

2 访问与赋值


QByteArray ba; ba.resize(6); ba[0] = 0x3c; ba[1] = 0xb8; ba[2] = 0x64; ba[3] = 0x18; ba[4] = 0xca; ba.data()[5] = 0x31; qDebug()<<"[]"<<ba[2]; //[] d qDebug()<<"at()"<<ba.at(2); //at() d qDebug()<<"data()"<<ba.data()[2]; //data() d qDebug()<<"constData()"<<ba.constData()[2]; //constData() d qDebug()<<"constData()"<<ba.constData()[5]; //constData() 1

4 查找与比较

5 数据转换与处理

5.1 Hex转换

QByteArray text = QByteArray::fromHex("517420697320677265617421"); text.data();            // returns "Qt is great!"

QByteArray ba; ba.resize(3); ba[0] = 0x30; ba[1] = 0x31; ba[2] = 0x32; qDebug() << ba.toHex(); //return "303132"

5.2 数值转换与输出


int n = 63; qDebug()<<QByteArray::number(n);              // returns "63" qDebug()<<QByteArray::number(n, 16);          // returns "3f" qDebug()<<QByteArray::number(n, 16).toUpper();  // returns "3F" qDebug()<<QByteArray::number(n, 2);          // returns "111111" qDebug()<<QByteArray::number(n, 8);          // returns "77"

QByteArray ba; int n = 63; ba.setNum(n);           // ba == "63" ba.setNum(n, 16);       // ba == "3f"

QByteArray ba1 = QByteArray::number(12.3456, 'E', 3); QByteArray ba2 = QByteArray::number(12.3456, 'f', 3); qDebug()<<ba1;  // returns "1.235E+01" qDebug()<<ba2;  // returns "12.346"

5.3 字符串数值转为各类数值


QByteArray strInt("1234"); bool ok0; qDebug() << strInt.toInt();   // return 1234 qDebug() << strInt.toInt(&ok0,16);   // return 4660, 默认把strInt作为16进制的1234,对应十进制数值为4660  QByteArray string("1234.56"); bool ok1; qDebug() << string.toInt();   // return 0, 小数均视为0 qDebug() << string.toInt(&ok1,16);   // return 0, 小数均视为0 qDebug() << string.toFloat();   // return 1234.56 qDebug() << string.toDouble();   // return 1234.56  QByteArray str("FF"); bool ok2; qDebug() << str.toInt(&ok2, 16);     // return 255, ok2 == true qDebug() << str.toInt(&ok2, 10);     // return 0, ok == false, 转为十进制失败

5.4 大小写转换


QByteArray x("Qt by THE QT COMPANY"); QByteArray y = x.toLower(); // y == "qt by the qt company"  QByteArray z = x.toUpper(); // z == "QT BY THE QT COMPANY"

文章来源: QByteArray详解
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!