Qt中QString、QByteArray、int、double之间转换

news/2024/7/4 8:13:59 标签: 网络

Qt中QString、QByteArray、int、double之间转换

最近写Qt中的tcp网络编程,Socke连接后,接受到的数据类型是字节型,这就涉及到了大量的类型转换,在网上辗转几辄,总算有了点结果,特此跟大家分享。好了,不废话,下面细说。

方法/步骤

 
  1.  

    1.打开Qt Creator,我的是2.8.1版本。新建工程,应该包含了基本类型的头文件,这里就不详细说了,因为Qt中的头文件与类名是一样的。

  2.  

    2.首先来两个int类型的数据(或double型):

    int int_head=5;

    int int_data=10;

    这里的值是随便定的,我的是Socket接收到的数据。

  3.  

    3.首先将int型(double型)转换为QString型:

    QString str_head=QString::number(head,2);

    QString str_data=QString::number(data,2);

    number方法的第一个参数就是第2步骤的int类型数据(或double型);

    第二个参数表示进制数,如果你想转换为二进制字符串,参数值就为2,十进制就是10,其他进制同理。

    上述两个语句结果为:Head="101"; Data="1010";

  4.  

    4.将int型(double型)转换为QByteArray型:

    QByteArray byte_head,byte_data;

    memcpy(byte_head.data(),&int_head,sizeof(int_head));

    memcpy(byte_data.data(),&int_data,sizeof(int_data));

    这里使用内存复制函数memcpy将int类型复制到QByteArray字节类型

    //

    如果是将两个数据复制到一个字节变量中,可以这样写:

    QByteArray byte;

    byte.resize(2*sizeof(int));

    memcpy(byte.data(),&int_head,sizeof(int_head));

    memcpy(byte.data(),&int_data,sizeof(int_data));

    也就是改了一下byte的大小。

  5.  

    5.QString与QByteArray之间的相互转换:

    QString str_head,QString str_data;

    QByteArray byte_head,byte_data;

    //

    QByteArray转换为QString语句非常简单:

    str_head=QByteArray(byte_head);

    str_data=QByteArray(byte_data);

    或者是这样:

    str_head=byte_head.data();

    str_data=byte_data.data();

    //

    同理,QString转换为QByteArray字节型:

    byte_head=QString(str_head);

    byte_data=QString(str_data);

    或者是这样:

    byte_head=str_head.toLatin1();

    byte_data=str_data.toLatin1();

    当然,前提是必须先给要转换变量进行赋值!

  6.  

    6.QString、QByteArray转换为int型(double型):

    bool ok;

    int int_head=str_head.toInt(&ok,2);

    int int_data=str_data.toInt(&ok,2);

    //

    QByteArray要首先转换为QString型,在转换为int型:

    int int_head=byte_head.data().toInt(&ok,2);

    int int_data=byte_data.data().toInt(&ok,2);

    读者可以通过ok的值来判断转换是否成功。

    END

转自:https://jingyan.baidu.com/article/a3761b2b8f4f3b1576f9aae3.html

转载于:https://www.cnblogs.com/daboba/p/10893656.html


http://www.niftyadmin.cn/n/658015.html

相关文章

用Java实现代码编辑器的下拉补全效果

效果 主要类(继承JTextArea监听输入,使用JComboBox显示下拉) 可以手动添加候选信息或&#xff0c;使用配置文件&#xff0c;读取配置文件 public class AutoCompleteTextArea extends JTextArea implements AutoCompleteListener {private Map<String,TipInfo> map;pr…

美国男子麦当劳快餐吃出死老鼠 索赔170万美元

【来源&#xff1a;中国新闻网】 【作者&#xff1a;钟岩】 美国得克萨斯州一名男子26日向联邦地方法院起诉麦当劳&#xff0c;其原因是他与家人在麦当劳的外带快餐里发现一只死老鼠。   美国达拉斯早晨新闻报道说&#xff0c;这位名为托德-哈利的男子向麦当劳索赔170万美元…

background-size css background-images

在设计网页时&#xff0c;经常会用到背景图片来达到视觉效果。 一般情况下用repeat的方式是最适全不过了&#xff0c;不过有时间是采用整图来充当背景&#xff0c;那么这个时候就会有多种可能性的存在了。 整图来做背景一般是采用no-repeat来实现的&#xff0c;但是屏幕大小是比…

WPF下递归生成树形数据绑定到TreeView上(转)

WPF下递归生成树形数据绑定到TreeView上 最终效果图&#xff1a;&#xff08;用于学习类的效果 图片丑了点&#xff0c;看官莫怪&#xff09; 新建窗体 然后在前端适当位置插入如下代码&#xff1a; <TreeView x:Name"departmentTree" Height"500" Wid…

使用JTextArea的游戏测试

效果 核心类(主要是使用char[][]存储显示信息,StringBuilder用于拼接信息在JTextArea上显示) public class MyTextPanel extends JTextArea implements MyListener,Runnable, Input {//宽 88 高 29private StringBuilder builder;private char[][] map;private int updateT…

Jersey 2.x 服务器端应用支持的容器

基于 JAX-RS Servlet-based 部署的一部分标准&#xff0c;能运行在任何支持 Servlet 2.5 和更高标准的的容器上。Jersey 提供支持程序化部署在下面的容器中&#xff1a;Grizzly 2 &#xff08;HTTP 和 Servlet&#xff09;&#xff0c; JDK Http server&#xff0c;Simple Http…

一个用xml存储日志信息的程序

本程序中利用asp代码生成的日志信息存储到xml文件中&#xff0c;然后由xslt格式化输出 该程序共分三个部分:1. 生成日志的asp程序 代码见以前的一篇文章&#xff1a; http://blog.csdn.net/precipitant/archive/2005/04/28/366634.aspx 2. 由 上面的 程序 生成的日志文…

properties与yaml互转工具类

没事写的&#xff0c;实际更加推荐使用网上一些更加完善的在线工具 效果 正向转换 原内容 转换结果 反向 原内容 结果 主要类 public class p2y {private static final String REVERSE "-r";private static final Pattern PATTERN Pattern.compile("(.)\…