hex数字 与 hex字符串 相互装换
·
hex数字 与 hex字符串 相互装换
QT 便利函数实现
// 字符串转 hex数
QByteArray ba = QByteArray::fromHex("0105000FFF00BC39");
// hex数转字符串
QString tmpHex = ba.toHex();
/*!
* \brief 打印 buff 16进制表示
* \param buf
* \param len
*/
static void PrintBuf2HexStr( char buf[],int len)
{
QString tmp = QByteArray::fromRawData(buf,len).toHex();
qDebug()<<"buf RawData Hex: "<<tmp;
}
/*!
* \brief 打印 buff 2进制表示
* \param buf
* \param len
*/
static void PrintBuf2BinStr( char *buf,int len)
{
QString tmp;
for(int i = 0; i < len;i++)
{
quint8 item =buf[i];
// 8bit 长度 ,2进制,0填充
tmp += QString("%1 ").arg(item,8,2,QChar('0'));
}
qDebug()<<"buf RawData Bin: "<<tmp;
}
自定义
16进制字符串 转换为 16进制数
/*!
* @brief 16进制字符串 转换为 16进制数
* @param hexStr 16进制字符串
* @return 16进制数
*/
QByteArray hexStrToHexCode(QByteArray hexStr)
{
// hexStr to hexCode
QByteArray sendHexArray;
//--高4位
char tmpCharH=0;
//--低4位
char tmpCharL=0;
char resultHex=0;
if(hexStr.length()%2!=0){
hexStr.prepend('0');
}
for(int i=0;i<hexStr.length();){
tmpCharH = hexCharToHexCode(hexStr.at(i));
tmpCharL = hexCharToHexCode(hexStr.at(i+1));
resultHex = (tmpCharH<<4|tmpCharL)&0xff;
printf("%02x ",resultHex&0xff);
sendHexArray.append(resultHex);
i+=2;
}
printf("\n");
fflush(stdout);
return sendHexArray;
}
/*!
* @brief 16进制字符 转 16进制数
* @param hexChar 4bit
* @return 16进制数
*/
char hexCharToHexCode(char hexChar)
{
char resultChar = 0;
if(hexChar>='0'&&hexChar<='9'){
resultChar = hexChar - '0';
}
if(hexChar>='a'&&hexChar<='f'){
resultChar = hexChar - 'a' + 10;
}
if(hexChar>='A'&&hexChar<='F'){
resultChar = hexChar - 'A' + 10;
}
return resultChar;
}
16进制数 转换为 16进制字符串
- 方法一:
/*!
* @brief 16进制数 转换为 16进制字符串
* @param hexCode
* @return
*/
QByteArray hexCodeToHexStr(QByteArray hexCode)
{
// hexCode to hexStr
QByteArray hexStrArray;
//--高4位
char tmpCharH=0;
//--低4位
char tmpCharL=0;
for(int i=0;i<hexCode.length();i++){
tmpCharH = hexCodeToHexChar((hexCode.at(i)>>4&0x0f));
tmpCharL = hexCodeToHexChar(hexCode.at(i)&0x0f);
qDebug()<<"tmpCharH "<<tmpCharH;
qDebug()<<"tmpCharL "<<tmpCharL;
hexStrArray.append(tmpCharH);
hexStrArray.append(tmpCharL);
}
return hexStrArray;
}
/*!
* @brief 16进制数 转换为 16进制字符
* @param hexCode 16进制数 4bit
* @return 16进制字符
*/
char hexCodeToHexChar(char hexCode)
{
if(hexCode>0x0f){
qWarning()<<"not a hex code !!!";
return hexCode;
}
char hexStr[16] ={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
return hexStr[hexCode];
}
- 方法二:
/*!
* @brief 16进制数 转换为 16进制字符串
* @param hexCode
* @return
*/
QString hexCodeToHexString(QByteArray hexCode)
{
QString hexStr ;
for (int i =0;i<hexCode.size();i++) {
//--高4位
QString h = QString::number((hexCode.at(i)&0xf0)>>4, 16);
//--低4位
QString l = QString::number(hexCode.at(i)&0x0f, 16);
hexStr.append(h);
hexStr.append(l);
hexStr.append(' ');
}
return hexStr;
}
更多推荐



所有评论(0)