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;
}
QString轉BYTE數組
//將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;
}