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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值