qbytearry有数据上限吗_QByteArray详解

本文详尽探讨QByteArray,涉及初始化、访问赋值、操作、查找比较及数据转换。示例展示了其在串口通信中的应用,包括Hex转换、数值转换、大小写转换等实用功能。
摘要由CSDN通过智能技术生成

QByteArray在串口通讯中经常被使用,有一定必要较为全面详细的对QByteArray进行阐述。本文通过以下几个部分加以介绍:

1. 初始化

2. 访问与赋值

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

4. 查找与比较

5. 数据转换与处理

1 初始化

2 访问与赋值

访问QByteArray主要有4中方式,分别为[]、at()、data[]和constData[]。其中[]和data[]为可读可写,at()和constData[]仅为可读。如果仅是读,则通过at()和constData[]访问速度最快,因可避免复制处理。示例如下:

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

qDebug()<

qDebug()<

qDebug()<

qDebug()<

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

4 查找与比较

5 数据转换与处理

5.1 Hex转换

把Hex编码转换为char存储到QByteArray:

QByteArray text = QByteArray::fromHex("517420697320677265617421");

text.data(); // returns "

QByteArray是Qt中一个非常常用的类,用于存储二进制数据和文本数据。 QByteArray的主要特性: 1. 支持自动调整大小,可以根据需要自动增加或减少内存空间。 2. 可以快速地访问和修改数据。 3. 支持与QString之间的转换,可以方便地在文本和二进制之间进行转换。 4. 支持大量的操作,如查找、替换、插入、删除等。 QByteArray的使用方法: 1. 创建QByteArray对象 可以使用默认构造函数创建一个空的QByteArray对象,也可以使用其他构造函数创建一个指定大小和初始值的QByteArray对象。 ```c++ QByteArray byteArray; // 创建一个空的QByteArray对象 QByteArray byteArray1(10, 0); // 创建一个大小为10,初始值为0的QByteArray对象 ``` 2. 访问和修改数据 可以使用[]运算符访问和修改数据,也可以使用data()函数返回一个指向数据的指针。 ```c++ QByteArray byteArray("hello"); qDebug() << byteArray[1]; // 输出 'e' byteArray[1] = 'a'; qDebug() << byteArray.data(); // 输出 "hallo" ``` 3. 自动调整大小 当向QByteArray添加数据时,如果当前空间不足,QByteArray会自动调整大小以适应新的数据。 ```c++ QByteArray byteArray; byteArray.append("hello"); byteArray.append("world"); qDebug() << byteArray.data(); // 输出 "helloworld" ``` 4. 与QString之间的转换 可以使用fromUtf8()、toUtf8()等函数在QByteArray和QString之间进行转换。 ```c++ QByteArray byteArray = "hello"; QString str = QString::fromUtf8(byteArray); qDebug() << str; // 输出 "hello" byteArray = str.toUtf8(); qDebug() << byteArray.data(); // 输出 "hello" ``` 5. 其他操作 QByteArray还支持大量的操作,如查找、替换、插入、删除等。 ```c++ QByteArray byteArray("hello world"); int index = byteArray.indexOf("world"); byteArray.replace(index, 5, "china"); qDebug() << byteArray.data(); // 输出 "hello china" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值