//16进制字符串转字节数组

staticQByteArrayHexStrToByteArray(QStringstr)

{

QByteArraysenddata;//发送数据

inthexdata,lowhexdata;

inthexdatalen=0;

intlen=str.length();//求出发送字符传唱度

senddata.resize(len/2);//两个字符分割

charlstr,hstr;

for(inti=0;i<len;){

hstr=str[i].toLatin1();//本地字符

if(hstr==''){

i++;

continue;

}

i++;

if(i>=len)

break;

lstr=str[i].toLatin1();

hexdata=ConvertHexChar(hstr);//将16进制转换字符型

lowhexdata=ConvertHexChar(lstr);

if((hexdata==16)||(lowhexdata==16))

break;

else

hexdata=hexdata*16+lowhexdata;

i++;

senddata[hexdatalen]=(char)hexdata;

hexdatalen++;

}

senddata.resize(hexdatalen);

returnsenddata;

}


staticcharConvertHexChar(charch)

{

if((ch>='0')&&(ch<='9'))

returnch-0x30;

elseif((ch>='A')&&(ch<='F'))

returnch-'A'+10;

elseif((ch>='a')&&(ch<='f'))

returnch-'a'+10;

elsereturn(-1);

}


//字节数组转16进制字符串

staticQStringByteArrayToHexStr(QByteArraydata)

{

QStringtemp="";

QStringhex=data.toHex();

for(inti=0;i<hex.length();i=i+2){

temp+=hex.mid(i,2)+"";

}

returntemp.trimmed().toUpper();

}


//16进制字符串转10进制

staticintStrHexToDecimal(QStringstrHex)

{

boolok;

returnstrHex.toInt(&ok,16);

}


//10进制字符串转10进制

staticintStrDecimalToDecimal(QStringstrDecimal)

{

boolok;

returnstrDecimal.toInt(&ok,10);

}


//2进制字符串转10进制

staticintStrBinToDecimal(QStringstrBin)

{

boolok;

returnstrBin.toInt(&ok,2);

}


//16进制字符串转2进制字符串

staticQStringStrHexToStrBin(QStringstrHex)

{

uchardecimal=StrHexToDecimal(strHex);

QStringbin=QString::number(decimal,2);

ucharlen=bin.length();

if(len<8){

for(inti=0;i<8-len;i++){

bin="0"+bin;

}

}

returnbin;

}


//10进制转2进制字符串一个字节

staticQStringDecimalToStrBin1(intdecimal)

{

QStringbin=QString::number(decimal,2);

ucharlen=bin.length();

if(len<=8){

for(inti=0;i<8-len;i++){

bin="0"+bin;

}

}

returnbin;

}


//10进制转2进制字符串两个字节

staticQStringDecimalToStrBin2(intdecimal)

{

QStringbin=QString::number(decimal,2);

ucharlen=bin.length();

if(len<=16){

for(inti=0;i<16-len;i++){

bin="0"+bin;

}

}

returnbin;

}


//10进制转16进制字符串,补零.

staticQStringDecimalToStrHex(intdecimal)

{

QStringtemp=QString::number(decimal,16);

if(temp.length()==1){

temp="0"+temp;

}

returntemp;

}