首先来两个int类型的数据(或double型):
int int_head=5;
int int_data=10;
1.首先将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″;
2.将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的大小
3.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();
-前提是必须先给要转换变量进行赋值
4.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的值来判断转换是否成功。
含有小数的QString转换成Float,或int
QString strTest = "3.1415926";
FLOAT fResult = StrTest.tofloat();// fResult的值为3.1415926
int iResult = StrTest.toInt();// iResult的值为3
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
我的知识库
本文地址: QT中QString、QByteArray、int、double之间转换
本文地址: QT中QString、QByteArray、int、double之间转换