zoukankan      html  css  js  c++  java
  • 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;

      byte_head.resize(4);

      byte_data.resize(4);

      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

  • 相关阅读:
    文件上传
    大三寒假学习进度笔记Day16
    大三寒假学习进度笔记Day15
    大三寒假学习进度笔记Day14
    大三寒假学习进度笔记Day13
    大三寒假学习进度笔记Day12
    大三寒假学习进度笔记Day11
    大三寒假学习进度笔记Day10
    Java命名规范
    架构漫谈阅读笔记03
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/8724569.html
Copyright © 2011-2022 走看看