這個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
*/
}
留言列表