本篇是對作者本人在工作經常遇到的進制轉換進行總結,,編程環境為QT5.7
int類型轉16進制的字符串
兩種方式:
第一種:
1 int m_networkNo = 6300; 2 Log::debug(QString::number(m_networkNo, 16));//這里的log::debug是打印日志(自定義),可換成qDebug
第二種
QString QString::arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char( ' ' )) const
fieldWidth:字符串指定長度
fillChar:不夠長度用這個字符進行填充
1 int m_networkNo = 6300; 2 Log::debug(QString("%1").arg(m_networkNo, 6, 16, QLatin1Char('0')));
QString 16進制轉二進制的char*
1 char* myHexToBin(QString inStr, char *dest, int len) 2 { 3 int size=inStr.length(); 4 for (int i=0,j=0;i<size && j<len;i+=2,j++) 5 { 6 unsigned char tempC,bcd; 7 tempC=inStr.at(i).toLatin1(); 8 if (tempC>='a' && tempC<='f') tempC=tempC-'a'+'A'; 9 bcd = ( tempC>='A'? tempC - 'A'+ 0x0a:tempC - '0') << 4; 10 tempC=inStr.at(i+1).toLatin1(); 11 if (tempC>='a' && tempC<='f') tempC=tempC-'a'+'A'; 12 bcd += tempC>='A'? tempC - 'A'+ 0x0a:tempC - '0'; 13 sprintf(dest+j, "%c",bcd); 14 } 15 return dest; 16 }