首先来两个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