当前位置: 首页 > news >正文

做任务赚钱网站有哪些南京seo公司教程

做任务赚钱网站有哪些,南京seo公司教程,网站建设小公司生存,behance设计网站官网入口QByteArray 是 Qt 中用于处理原始字节数据的类&#xff0c;类似于标准库中的 std::vector<char> 或 std::string&#xff0c;但具有更多适合Qt框架的功能。它可以用来处理文本和二进制数据&#xff0c;并提供了一些方便的方法进行数据操作。下面是一些常见的用法示例&…

QByteArray 是 Qt 中用于处理原始字节数据的类,类似于标准库中的 std::vector<char>std::string,但具有更多适合Qt框架的功能。它可以用来处理文本和二进制数据,并提供了一些方便的方法进行数据操作。下面是一些常见的用法示例:

创建和初始化

#include <QByteArray>
#include <QDebug>int main() {QByteArray byteArray1;  // 创建一个空的 QByteArrayQByteArray byteArray2("Hello, World!");  // 使用字符串初始化QByteArray byteArray3(10, 'a');  // 创建一个大小为10且填充字符'a'的 QByteArrayqDebug() << "byteArray1:" << byteArray1;qDebug() << "byteArray2:" << byteArray2;qDebug() << "byteArray3:" << byteArray3;return 0;
}

访问和修改数据

#include <QByteArray>
#include <QDebug>int main() {QByteArray byteArray("Hello, World!");// 访问数据char firstChar = byteArray[0];qDebug() << "First character:" << firstChar;// 修改数据byteArray[0] = 'h';qDebug() << "Modified byteArray:" << byteArray;// 使用 append 方法byteArray.append(" Goodbye!");qDebug() << "Appended byteArray:" << byteArray;return 0;
}

转换

#include <QByteArray>
#include <QDebug>
#include <QString>int main() {QByteArray byteArray("Hello, World!");// 转换为 QStringQString str = QString::fromUtf8(byteArray);qDebug() << "QString:" << str;// 从 QString 转换为 QByteArrayQByteArray byteArrayFromString = str.toUtf8();qDebug() << "QByteArray from QString:" << byteArrayFromString;return 0;
}

查找和分割

#include <QByteArray>
#include <QDebug>int main() {QByteArray byteArray("Hello, World! Hello, Qt!");// 查找子串int index = byteArray.indexOf("Hello");qDebug() << "First occurrence of 'Hello':" << index;// 分割QList<QByteArray> parts = byteArray.split(',');for (const QByteArray &part : parts) {qDebug() << "Part:" << part;}return 0;
}

文件操作

#include <QFile>
#include <QByteArray>
#include <QDebug>int main() {QFile file("example.bin");if (file.open(QIODevice::ReadOnly)) {QByteArray fileData = file.readAll();file.close();qDebug() << "File data:" << fileData;// 对数据进行操作...// 写回文件if (file.open(QIODevice::WriteOnly)) {file.write(fileData);file.close();}} else {qDebug() << "Failed to open file.";}return 0;
}

与串口结合使用

结合前面的示例,将 QByteArray 用于串口数据传输:

#include <QApplication>
#include <QFileDialog>
#include <QFile>
#include <QSerialPort>
#include <QDebug>QByteArray createHeader(quint32 sequenceNumber) {QByteArray header;header.append("HEADER");header.append(QByteArray::number(sequenceNumber));return header;
}QByteArray createFooter() {QByteArray footer;footer.append("FOOTER");return footer;
}bool sendPacket(QSerialPort &serial, quint32 sequenceNumber, const QByteArray &data) {QByteArray packet;packet.append(createHeader(sequenceNumber));packet.append(data);packet.append(createFooter());qint64 bytesWritten = serial.write(packet);return bytesWritten == packet.size();
}int main(int argc, char *argv[]) {QApplication app(argc, argv);QString filePath = QFileDialog::getOpenFileName(nullptr, "Open Binary File", "", "Binary Files (*.bin);;All Files (*)");if (filePath.isEmpty()) {qDebug() << "No file selected.";return -1;}QFile file(filePath);if (!file.open(QIODevice::ReadOnly)) {qDebug() << "Cannot open file for reading:" << file.errorString();return -1;}QByteArray fileData = file.readAll();file.close();QSerialPort serial;serial.setPortName("COM3");serial.setBaudRate(QSerialPort::Baud9600);serial.setDataBits(QSerialPort::Data8);serial.setParity(QSerialPort::NoParity);serial.setStopBits(QSerialPort::OneStop);serial.setFlowControl(QSerialPort::NoFlowControl);if (!serial.open(QIODevice::WriteOnly)) {qDebug() << "Cannot open serial port:" << serial.errorString();return -1;}int packetSize = 128;int totalSize = fileData.size();quint32 sequenceNumber = 0;for (int i = 0; i < totalSize; i += packetSize) {QByteArray dataChunk = fileData.mid(i, packetSize);if (!sendPacket(serial, sequenceNumber++, dataChunk)) {qDebug() << "Failed to send packet with sequence number:" << sequenceNumber - 1;serial.close();return -1;}serial.waitForBytesWritten(100);}serial.close();qDebug() << "All packets sent successfully.";return 0;
}

代码解释

  • 创建和初始化:展示了如何创建和初始化 QByteArray
  • 访问和修改数据:展示了如何访问和修改 QByteArray 的数据。
  • 转换:展示了 QByteArrayQString 之间的转换。
  • 查找和分割:展示了如何查找子串和分割 QByteArray
  • 文件操作:展示了如何使用 QByteArray 读取和写入文件。
  • 与串口结合使用:展示了如何使用 QByteArray 创建数据包并通过串口发送。

通过这些示例,可以更好地理解和使用 QByteArray 处理和传输数据。QByteArray 是 Qt 框架中处理字节数据的强大工具。它不仅能存储和操作字节数据,还能进行多种转换和操作。以下是一些常见的用法:

常见操作

创建和初始化

QByteArray byteArray1;  // 创建一个空的 QByteArray
QByteArray byteArray2("Hello, World!");  // 使用字符串初始化
QByteArray byteArray3(10, 'a');  // 创建一个大小为10且填充字符'a'的 QByteArray

访问和修改数据

QByteArray byteArray("Hello, World!");
char firstChar = byteArray[0];  // 访问第一个字符
byteArray[0] = 'h';  // 修改第一个字符
byteArray.append(" Goodbye!");  // 追加字符串

QByteArray.mid()

mid 方法用于从 QByteArray 中截取特定范围的子数组。

QByteArray array("Hello, World!");
QByteArray subArray = array.mid(0, 5);  // 截取从索引0开始长度为5的子数组
qDebug() << subArray;  // 输出: "Hello"

QByteArray.at()

at 方法用于访问 QByteArray 中指定索引处的字节。

QByteArray array("Hello, World!");
char charAt5 = array.at(5);  // 访问索引5处的字符
qDebug() << charAt5;  // 输出: ','

转换和输出

toUInt 方法

QByteArray 中的内容转换为无符号整数。

QByteArray array = QByteArray::fromHex("0100010001");
bool ok;
unsigned int value = array.mid(0, 4).toUInt(&ok, 16);  // 将前4个字节转换为16进制整数
qDebug() << value;  // 输出: 16777473 (0x01000100)

toHex 方法

QByteArray 中的内容转换为16进制字符串。

QByteArray array = QByteArray::fromHex("0100010001");
QByteArray hexString = array.mid(0, 4).toHex();  // 将前4个字节转换为16进制字符串
qDebug() << hexString;  // 输出: "01000100"

示例应用:处理和发送数据

结合前面的示例,将 QByteArray 用于串口数据传输:

#include <QApplication>
#include <QFileDialog>
#include <QFile>
#include <QSerialPort>
#include <QDebug>QByteArray createHeader(quint32 sequenceNumber) {QByteArray header;header.append("HEADER");header.append(QByteArray::number(sequenceNumber));return header;
}QByteArray createFooter() {QByteArray footer;footer.append("FOOTER");return footer;
}bool sendPacket(QSerialPort &serial, quint32 sequenceNumber, const QByteArray &data) {QByteArray packet;packet.append(createHeader(sequenceNumber));packet.append(data);packet.append(createFooter());qint64 bytesWritten = serial.write(packet);return bytesWritten == packet.size();
}int main(int argc, char *argv[]) {QApplication app(argc, argv);QString filePath = QFileDialog::getOpenFileName(nullptr, "Open Binary File", "", "Binary Files (*.bin);;All Files (*)");if (filePath.isEmpty()) {qDebug() << "No file selected.";return -1;}QFile file(filePath);if (!file.open(QIODevice::ReadOnly)) {qDebug() << "Cannot open file for reading:" << file.errorString();return -1;}QByteArray fileData = file.readAll();file.close();QSerialPort serial;serial.setPortName("COM3");serial.setBaudRate(QSerialPort::Baud9600);serial.setDataBits(QSerialPort::Data8);serial.setParity(QSerialPort::NoParity);serial.setStopBits(QSerialPort::OneStop);serial.setFlowControl(QSerialPort::NoFlowControl);if (!serial.open(QIODevice::WriteOnly)) {qDebug() << "Cannot open serial port:" << serial.errorString();return -1;}int packetSize = 128;int totalSize = fileData.size();quint32 sequenceNumber = 0;for (int i = 0; i < totalSize; i += packetSize) {QByteArray dataChunk = fileData.mid(i, packetSize);if (!sendPacket(serial, sequenceNumber++, dataChunk)) {qDebug() << "Failed to send packet with sequence number:" << sequenceNumber - 1;serial.close();return -1;}serial.waitForBytesWritten(100);}serial.close();qDebug() << "All packets sent successfully.";return 0;
}

代码解释

  • QByteArray.mid():截取从指定索引开始指定长度的子数组。
  • QByteArray.at():访问指定索引处的字节。
  • toUInttoHex:将 QByteArray 转换为无符号整数和16进制字符串。
  • 示例应用:展示了如何使用 QByteArray 创建数据包并通过串口发送。

通过这些示例,可以更好地理解和使用 QByteArray 进行各种数据操作。

http://www.dinnco.com/news/77177.html

相关文章:

  • 上海一家做服饰包鞋穿上用品的网站百度网站客服
  • wordpress网站怎么建设网络推广员一个月多少钱
  • 淘宝网页版怎么退出登录seo广告优化多少钱
  • 烟台做网站哪里好营销咨询服务
  • 做淘宝那样的网站麻烦吗信息流广告代理商排名
  • 外国网站界面福建省人民政府门户网站
  • 网站ip地址查询域名今日热榜官网
  • 中企动力做网站真贵网络营销方法有哪些
  • 搜狐网站网络营销怎么做百度应用app
  • 宠物网站建设需求分析安徽网络关键词优化
  • 长春网站建设小程序西安sem竞价托管
  • 怎么做网站加盟百度seo多久能优化关键词
  • 佛山大型的网站制作今日新闻最新头条
  • 什么是品牌网站建设手机关键词点击排名软件
  • 怎么创建网站详细流程2021网络营销成功案例
  • 做网站实现图片自动压缩网页制作步骤
  • 网站关键字如何设置百度一下首页网页
  • 绵阳网站建设 小程序福州百度快速优化排名
  • 大学网站建设管理办法信息化百度一下首页
  • 重庆做网站 哪个好些嘛亚洲长尾关键词挖掘
  • 商标注册查询系统官网厦门关键词优化平台
  • 国外那些网站是做五金饰品批发产品推广方法
  • 公司网站域名如何续费广州网站营销推广
  • 嵊州网站设计西安网站制作工作室
  • 最专业的礼品网站案例参考国家免费职业技能培训
  • 合肥网站外包百度竞价排名广告定价
  • 做网站用什么电脑二级域名网址查询
  • wap asp网站模板下载自动seo网站源码
  • 网站关键词优化排名软文自助发稿平台oem
  • 郑州网站开发公司电话企业查询信息平台