简单数据转化

1.控制台输出
可以使用qDebug来实现往控制台输出信息。
qDebug的函数原型:
qDebug(const char* message,…)
可以像C语言的printf()函数一样实现格式化输出,例如:
qDebug(“I have %d apples!”,5);

如果包含QtDebug头文件,

#include <QtDebug>

则可以使用类似如下的语法更方便的写输出语句

qDebug()<<"I have"<<5<<"apples!";

2.int和char,unsigned char转化
先看一个例子:

    int nParam = 253;
    char ch = nParam;
    unsigned char uch = nParam;
    qDebug()<<"ch ="<<(int)ch;
    qDebug()<<"uch ="<<(int)uch;

可以看看它的输出结果:
这里写图片描述
然后来分析下:
253整形值在赋给ch和uch的时候就剩一个字节了,其中这个字节的二进制表示为:1111 1101.
对于unsigned char很好理解,因为它是无符号的整形数,所以1111 1101中的最高位1不在表示符号,可以直接参与计算,所以它的值就是:
1*2^7 + 1*2^6+ 1*2^5+ 1*2^4+ 1*2^3+ 1*2^2+ 0*2^1+ 1*2^0
就是253.
那么对于char来说,其最高位1代表了符号位,表示是个负数,那么此时的计算方式简单说就是对1111 1101,保证符号位1不变,其余部分取反,最后再加1,计算过程如下:
取反操作:10000010
加1操作: 10000011
这时它的结果就是:
-(0*2^6+ 0*2^5+ 0*2^4+ 0*2^3+ 0*2^2+ 1*2^1+ 1*2^0) = -3

3.QString转int,int转QString
int转QString

 int n = 253; QString str1 = QString::number(n);

QString转int

    QString str2 = QObject::trUtf8("352");
    int t = str2.toInt();

4.float转QString,QString转float
float转QString

    float f = 2.56;
    QString str = QString("%1").arg(f);

QString转float

    QString strFloat = QObject::trUtf8("2.56");
    float f2 = strFloat.toFloat();

5.double转QString,QString转double
实现方式类似方法4中的float和QString转化

6.char* 转QString,QString转char*
char* 转QString

    char* chStr = "Hello world!";
    QString str3 = QString(chStr);
    qDebug()<<str3;

QString转char*

    QString str4 = QObject::trUtf8("I like apples!");
    QByteArray qba = str4.toLatin1();
    char* data = qba.data();
    qDebug()<<data;

你可能感兴趣的:(数据转化)