QString字符轉換

QString字符轉換

BYTE數組轉QString

BYTE byteTemp[16];

memset(byteTemp,0,16); 

//BYTE數組轉換爲QString類型

QString NFCTest::BYTEToQString(constBYTE *byteBuffer,const int nSize)

{

      QString qstrData;

      char pBuff[3];

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

      {

           sprintf(pBuff,"%.2x ",byteBuffer[i]);

           qstrData += pBuff;

      }

      return qstrData;

}

QStringBYTE數組

//QString類型拆分爲BYTE類型

void NFCTest::QStringToBYTE(constQString strData,BYTE** byteData,int& byteLen)

{

      QString qstrNoNull = strData.trimmed();

      QStringList qstrData = qstrNoNull.split('|');

      int strLen = qstrData.length();

      for(int i = 0;i < qstrData.length();i++)

      {

           if(qstrData.at(i) == "")

           {

                 strLen--;

           }

      }

      byteLen = strLen;

 

      (*byteData) = new BYTE[byteLen];

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

      {

           QString strTemp = qstrData.at(i);

           (*byteData)[i] = QString2QCharToByte(strTemp);

      }

}

 

// QString轉換爲BYTE,如"23"-x23

BYTE NFCTest::QString2QCharToByte(constQString str_arr) 

{ 

    unsigned char ch1 = 0; 

    unsigned char ch2 = 0; 

    int k = 0; 

 

      BYTE byteChar = 0;

      int len = str_arr.length();

 

      if(len == 1)

      {

           ch1 = 'f';

           ch2 = str_arr.at(0).cell();

      }

      else if(len == 2)

      {

           ch1 = str_arr.at(0).cell();

           ch2 = str_arr.at(1).cell();

      }

      else

      {

           ch1 = 'f';

            ch2= 'f';

      }

 

    if (ch1 >= 48 && ch1 <=57) 

    { 

        ch1 &= 0x0F; 

    } 

    else if ((ch1 >= 'A' && ch1<= 'F') ||  (ch1 >= 'a' && ch1<= 'f'))

    { 

        ch1 &= 0x0F; 

        ch1 += 0x09; 

    }

      else

      {

           ch1 = 0x0F;

      }

 

    if (ch2 >= 48 && ch2 <=57) 

    { 

        ch2 &= 0x0F; 

    } 

    else if((ch2 >= 'A' && ch2 <='F') ||  (ch2 >= 'a' && ch2<= 'f'))

    { 

        ch2 &= 0x0F; 

        ch2 += 0x09; 

    }

      else

      {

           ch2 = 0x0F;

      }

 

    ch1<<=4; 

    byteChar = ch1 + ch2;

      return byteChar;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章