這個Function製作的緣由,是因為讀取GPRS的簡訊時他會以unicode的編碼顯示,為了在QT中還原為中文字,因此有需要用到將unicode的編碼4bytes字串轉換成整數,這樣才能獲得正確的編碼位置,以讀取到正確的中文字。

 


//include在此只引入C/C++需要的QT的部份就不多說明

#include <stdio.h>

#include <string.h>

#include <math.h>


//four16toi 4個16進制字元轉換成一個整數

/* class類別名稱這是在QT中建立的函數,QString這也是QT中特有的類型,如果要應用到其他的地方則請參考此函數的原型去修改 */

QString class類別名稱::four16toi(char *nptr)

{

    QString chang;

    for(int j=0;j<strlen(nptr)/4;j++)

    {

     int sum=0;

    for(int i=0;i<4;i++)

    {

       if(nptr[i+j*4]>47 && nptr[i+j*4]<58)

          sum+=(nptr[i+j*4]-48)*pow(16,3-i);

       else if(nptr[i+j*4]>64 && nptr[i+j*4]<71)

          sum+=(nptr[i+j*4]-55)*pow(16,3-i);

       else if(nptr[i+j*4]>96 && nptr[i+j*4]<103)

          sum+=(nptr[i+j*4]-87)*pow(16,3-i);

       else

       return 0;

    }

    chang[j]=sum;

    }

    return chang;   

}


class類別名稱:: class類別名稱(QWidget *parent)

     : QWidget(parent)

{     

char a[]=”6211662f8ab0”; //我是誰

QString result;

result=four16toi(a);

/*

執行完之後,result獲得的值可以表示為

result[0]==QChar(0x6211)==25105

result[1]==QChar(0x662f)==26159

result[2]==QChar(0x8ab0)==35504

*/

}


arrow
arrow
    全站熱搜

    flykof 發表在 痞客邦 留言(0) 人氣()