打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Qt中QString、QByteArray、int、double之间转换
userphoto

2015.07.15

关注

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

  • |
  • 浏览:2170
  • |
  • 更新:

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

工具/原料

  • Qt 5.1.1、Qt Creator 2.8.1

方法/步骤

  1. 1

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

  2. 2

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

    int int_head=5;

    int int_data=10;

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

  3. 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

    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

    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

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

    bool ok;

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

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

    //

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

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

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

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


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
QT:QString、QByteArray和char *的转换。
如何将QString转换为char *或者相反
QT学习笔记-7.QString和QByteArray - Cpper - C++博客
Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题
Qt之QTextCodec乱谈
[QT]QByteArray与char、int、float(及其数组)、string之间的互相转化
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服