Qt中QString与int,char等互转

简述:

QString类提供了丰富的转换函数,可以将一个字符串转换为数值类型或者其他的字符编码集。QString::toInt()函数将字符串转换为整型数值,类似的函数还有toDouble()、toFloat()、toLong()、toLongLong();



1、  int, float , double类型 转换为QString


有两种方法:

A .  使用arg


    long a = 36;  
    QString s = QString("%1").arg(a);   // s == "36"  // int  QSting


    QString stepInfo = tr("Time: <b>%1</b>")
                       .arg(QString::number(timestamp,10), 8, '0'); //10进制,8位,不足补0


B .  使用QString::number() ;


    long a = 63;  
    QString s = QString::number(a, 10);             // s == "63"  
    QString t = QString::number(a, 16).toUpper();     // t == "3F"  //toUpper: 大写

[cpp]  view plain  copy
  1. static QString number(intint base=10);  
  2. static QString number(uint, int base=10);  
  3. static QString number(longint base=10);  
  4. static QString number(ulong, int base=10);  
  5. static QString number(qlonglong, int base=10);  
  6. static QString number(qulonglong, int base=10);  
  7. static QString number(doublechar f='g'int prec=6);  


第二参数可省略,省略时为10,表示10进制;


2、 QString 转换为 int类型


基数默认为10,基数须在2到36之间;


    Qstring str="FF";  
    bool ok;  
    int dec=str.toInt(&ok,10); //dec=255 ; ok=true    //QString  int
    int hex =str.toInt(&ok,16); //hex=255;ok=true;    //QString  int


3、 QString 转换为 double类型


    QString str="123.45";  
    double val=str.toDouble(); //val=123.45  //QString  double


    bool ok;  
    double d;  
    d=QString("1234.56e-02").toDouble(&ok); //ok=true;d=12.3456


4、 QString 转换为float 类型


    QString str="123.45";  
    float d=str.toFloat(); //d=123.45  

    QString str="R2D2";  
    bool ok;  
    float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;  


5、 QString 与 char 互转


1 >  char 转 QString


    char a='b';
    QString str;
    str=QString(a);


2 >  QString 转 char


    QString str="qq";
    char *ch;
    ch = str.toLatin1.data();


6 、 const char * 转 char *


    char *ch1="tt";
    const char *ch2="qq";
    ch1 = (char *)ch2;


7、 char *  与 QByteArray 互转


1 >   QByteArray 转 char *


    char *ch;
    QByteArray byte;
    ch = byte.data();


2 > char * 转 QByteArray 


    char *ch;
    QByteArray byte;
    byte = QByteArray(ch);


8、 QString 转换为char*


QString提供的字符编码集的转换函数将会返回一个constchar*类型版本的QByteArray,即构造函数QByteArray(constchar*)构造的QByteArray对象。QByteArray类具有一个字节数组,它既可以存储原始字节(raw bytes),也可以存储传统的以“\0”结尾的8位的字符串。在Qt中,使用QByteArray比使用const char*更方便,且QByteArray也支持隐式共享。转换函数有以下几种。

① toAscii():返回一个ASCII编码的8位字符串。

② toLatin1():返回一个Latin-1(ISO8859-1)编码的8位字符串。

③ toUtf8():返回一个UTF-8编码的8位字符串(UTF-8是ASCII码的超级,它支持整个Unicode字符集)。

④ toLocal8Bit():返回一个系统本地(locale)编码的8位字符串。


    QString qstr("hello,word");  
    const char * p = qstr.toLocal8Bit().data();  

    const char *p2 = qstr.toStdString().data(); 

9、 QByteArray  与 QString 互转


1 > QByteArray  转 QString


    QByteArray byte;
    QString string;
    string = QString(byte);

2 > QString  转 QByteArray  


    QByteArray byte;
    QString string;
    byte = string.toAscii();


10、当前时间转化为QString


    QString b_dateTime;
    b_dateTime.append(tr("%1").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")));


11、数值合并


QByteArray 中的两个字节合并成一个低八位一个高八位数据。


    QByteArray handle_Data;  
    //  byte0为高8位
    // 取出对应位的16进制char型之后转换为16进制的int型(强制转换)
    int data1= (unsigned char)handle_Data.at(0);  
    //  byte1为低8位
    // 取出对应位的16进制char型之后转换为16进制的int型(强制转换)
    int data2= (unsigned char)handle_Data.at(1);  
    int data_sum= data1<<8|data2;//移位8位是一个字节
    // 将16进制data_sum转换为string类型的10进制数便于在text上显示
    QString  data_string= QString::number(data_sum,10);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值