Qt之QByteArray各类数值转化

这篇具有很好参考价值的文章主要介绍了Qt之QByteArray各类数值转化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        QByteArray类对象的字符若都为数值,则可通过to**函数(也称为方法)转为各种类型的数据,示例如下:

QByteArray与char*互转

成员函数data可以返回指向字节数组中存储数据的指针。该函数的原型声明如下:

char*data();

该指针可用于访问和修改组成数组的元素。可以指定具体访问字节数组中的某一个,比如

ba.data()[0]

表示访问第0个.如果要把char*转为QString,可以直接作为参数传入QByteArray类的构造函数中:

char* pt;

QByteArray byte(str);

我们来看一个小例子。 返回char*并打印内容。

1)启动Qt Creator 5.12,新建一个控制台项目,项目名为test。

(2)在test.cpp中输入如下代码:成员函数data可以返回指向字节数组中存储数据的指针。

#include <QCoreApplication>

#include <iostream>

#include <QDebug>

using namespace std;

int main(int argc, char *argv[]){

QCoreApplication a(argc, argv);

QByteArray ba("Hello world");

char *data = ba.data();//返回一个指向字节数组 ba 的指针,指向第一个字符

qDebug() << ba.data(); //打印整个字符

while (*data){

cout << "["*data << "], ";

++data;

}

return a.exec ();

}

(3)按Ctrl+R快捷键运行项目,结果所示:

Hello world

H,e,1,1,o, ,w,o,r,1,d,

 QByteArray与std::string互转

string是C++标准库中的字符串类型。QByteArray类提供的成员函数toStdString()可以将字节数组转为string。该函数的原型声明如下:

std::string tostdString();

与该函数相反的函数是静态成员函数fromStdString(),它将string数据转为字节数组,该函数的原型声明如下:

[static] QByteArray QByteArray::fromStdString(const std::string &str);

其中,参数str是要转换的string字符串。函数返回转换后的字节数组。注意,转换的是str的一份备份,转换过程并不会影响str本身的内容。其中,参数str是要转换的string字符串。函数返回转换后的字节数组。注意,转换的是str的一份备份,转换过程并不会影响str本身的内容。

 与字符串QString互转

QString是Qt的字符串类,QByteArray是byte的数组。它们之间也可以互转。QByteArray与QString互转极为简单,二者在本质上是类似的,都是连续存储的,区别是前者可以存储无法显示的字符,后者只存储可显示的字符。如QByteArray类对象可以存储0x00-0x19,而QString类对象只能存储如0x30等可显示字符(Ox20-0x7E)。有关可显示字符,可参见ASCII表,相信大家在学习C语言时都了解过了。String转QByteArray的代码如下:

QString str=QString("hello world!");

QByteArray arr = str.toLatin1();

QByteArray转QString的代码如下:

QByteArray arr("hello world!");

QString str = arr;

下面再看一下QByteArray转为QString示例:

QByteArray ba("abc123");

QString str = ba//或str.prepend(ba)

qDebug()<<str//输出:"abc123"

QString转为QByteArray示例:

QString str("abc123");

QByteArray ba = str.toLatin1().

qDebug()<<ba://输出:"abc123"

 QByteArray与自定义结构体之间的转化

在Socket网络编程中,网络数据一般是uchar类型(最好是用uchar来传输,避免莫名其妙的错误另外用char类型也可以),在Qt中则可以使用QByteArray类。QByteArray类在OSocket共享库中,根据C++中char*数据与结构体之间的映射可以实现结构体与QByteArray的转化。下面来看一段代代码:

Qt之QByteArray各类数值转化,qt,开发语言

Qt之QByteArray各类数值转化,qt,开发语言

结果如下:

Qt之QByteArray各类数值转化,qt,开发语言

friend QDebug operator<<

这句语句是 C++ 中用于重载输出运算符 << 的一种典型用法。在这里,它的目的是为了使 QDebug 类能够更方便地输出特定类型的对象。

首先,QDebug 是 Qt 框架中用于输出调试信息的类。通过重载 << 运算符,你可以自定义类的输出行为,使其能够直接与 QDebug 对象一起使用。

假设你有一个类 MyClass,你想要能够以更友好的方式将其对象输出到 QDebug,你可以这样做

class MyClass {
    // 类的定义
public:
    // ...
};

QDebug operator<<(QDebug debug, const MyClass &obj) {
    // 自定义输出逻辑
    debug << "MyClass object";  // 这里可以根据实际情况输出你想要的信息
    return debug;
}

 friend 关键字在 C++ 中用于声明一个函数或类是另一个类的友元。友元函数或友元类具有访问其所在类的私有成员的权限。这允许在特定情况下赋予外部函数或类对私有成员的访问权,从而提供更灵活的设计。文章来源地址https://www.toymoban.com/news/detail-805827.html

到了这里,关于Qt之QByteArray各类数值转化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ Qt开发:SpinBox数值微调框组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍 QSpinBox 精度数值组件的常用方法及灵活运用。 QSpinBox 是Qt框架中的一个部件(

    2024年02月05日
    浏览(107)
  • Qt应用开发(基础篇)——LCD数值类 QLCDNumber

            QLCDNumber类继承于QFrame,QFrame继承于QWidget,是Qt的一个基础小部件。         框架类QFrame介绍         QLCDNumber用来显示一个带有类似lcd数字的数字,适用于 信号灯 、 跑步机 、 体温计 、 时钟 、 电表 、 水表 、 血压计 等仪器类产品的数值显示。      

    2024年02月13日
    浏览(37)
  • 完美解决Qt中关于Mysql程序的连接、打包等各类问题

    分享Qt如何连接Mysql、如何打包Mysql程序,完美解决连接和打包Mysql程序所出现的各类问题。        在Qt项目开发过程中,如果涉及到数据的存储,那么肯定会用到数据库,本篇文章以Mysql数据库为例,讲述Qt如何连接Mysql、如何打包含有Mysql的程序,并解决客户收到程序后无法

    2024年02月03日
    浏览(44)
  • QT支持多种开发语言

    QT主要是一个C++应用程序框架,但它也提供了对其他一些编程语言的官方或非官方支持。以下是QT支持的一些语言版本及其特点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.Python (PyQt)  : PyQt是QT的官方Python绑定,允许Python开发者使用QT库来创建

    2024年04月29日
    浏览(48)
  • 【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 战斗背景:做了个串口接收界面,用来接收传输过来的信号。但是光用数字显示太单调,需要用图线显示出来。 战略目标:干掉它。 战术路线:Qt 绘图可以使用 Qt Charts,先了解

    2024年02月11日
    浏览(49)
  • 【VisualStudio】使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月10日
    浏览(76)
  • 【Qt】将QtDesigner生成的.ui文件转化为.h头文件

    操作系统:windows10专业版。 Qt版本:qt-opensource-windows-x86-msvc2013_64-5.7.1.exe 博主的Qt安装目录:E:E01_cppIDEE01_qtinstall 并将安装后的bin目录:E:E01_cppIDEE01_qtinstallQt5.7.15.7msvc2013_64bin 添加至系统环境变量。 博主的Qt Designer可执行程序的路径: 如下图: 运行designer.exe即可打开

    2023年04月08日
    浏览(45)
  • QT Designer 生成的ui文件转化成py文件以及简单使用

    首先用QTdesigner 设计你的界面 然后保存成.ui文件 这一步大家应该都可以做到,就不细讲了 然后就是转换步骤 使用cmd进入ui所在目录 或者在pycharm项目里的终端进入ui所在目录 然后输入下列语句 这里的outputUI就可以替换成你想要的输出文件名 InputUI就是你想要转换的ui文件名 稍

    2023年04月08日
    浏览(49)
  • 【VisualStudio】基于 Visual Studio 使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月15日
    浏览(66)
  • 【Visual Studio】使用 C++ 语言,配合 Qt,开发了一个串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 我要使用的功能比较简单,主要包含扫描串口、打开串口、发送数据、接收数据、暂停按钮、停止按钮,因此接下里将围绕这几个功能依次更新。 我的工程项目名字叫 “GUI”。

    2024年02月11日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包