QByteArray常用笔记

Qt中无论是串口serialport还是tcp网络通信等,直接接收到(或者要发送)的数据都是QByteArray,之后的数据处理部分,无论你转为char*/char[]还是使用最多的QString,都得通过QByteArray转换

QByteArray ba(48,0);//创建一个长度48字节的初始值为0的字节数组
ba.resize(6);//改变字节数组的长度;
ba[0]=0x3C ; //给字节数组的第一位直接赋值十六进制数3C;
ba.data()[2]=0x31;//也是赋值
其中[ ]和data[]为可读可写,at( )和constData( )仅为可读;
QByteArray x(“and”);
x.prepend(“rock “); // x == “rock and” 前置
x.append(” roll”); // x == “rock and roll” 附加
x.replace(5, 3, “&”); // x == “rock & roll” 替代
如果要从字节数组两端删除空格,请使用trimmed() ,如果要从两端移除空格并用单个空格替换多个连续的空格,请使用simplified();
把Hex编码转换为char存储到字节数组里面
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”
进制转换
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"八进制
或者实用ba.setNum(n,16);//十六进制转换
QByteArray如果是数值,可以通过to**方法转为各种类型数值
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, 转为十进制失败

大小写转换,toLower()和toUpper();
字节数组和字符串互转;
QByteArray ba(“abc123”);
QString str = ba;
字节数组转换为字符串
QString str(“abc123”);
QByteArray ba = str.toLatin1();

字符串转为字节数组;
检查字节数组仲是否包含 特定字符或者子字符串;可以用contains();
查找出现次数 实用count()
替换为另一个,实用 replace()

最后检测是否为空字节数组:
注意isNull和isEmpty是不一样的;;;
QByteArray().isNull(); //true
QByteArray().isEmpty(); //true
QByteArray(“”).isNull(); //false
QByteArray(“”).isEmpty(); //true
qDebug() << QByteArray((const char *)0).isNull(); //true
qDebug() << QByteArray((const char *)0).isEmpty(); //true
if((const char *)0 == NULL) //true
qDebug() << “true.”;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值