最近使用串口通信操作nfc卡的扇区内的内容设及到了很多数据类型之间的转换,今天总结一下。
1、10进制16进制字符串相互显示
10->16
int a=10;
Qstring b = QString("%1").arg(b,2,16,QLatin1Char(‘0’));
参数说明 参数1即需要转换的int型数字 参数2 表示 最小宽度 参数3 表示要转的进制类型 参数4为填充数字
16->10
bool ok;
qbytearray a;//假设字符数组里面存储了一些16进制数
将数组第一位转为字符串 Qstring str = a[0].tohex();
int b = str.toint(&ok,16);//将字符串以16进制显示并转为10进制
2、将Qbytearray以字符串显示
有两种方法 第一种: Qbytearray a; a.tohex();
第二种: QString showHEX(QByteArray str) { QDataStream out(&str,QIODevice::ReadWrite); QString buf; while(!out.atEnd()) { qint8 outChar = 0; out >>outChar; QString str = QString("%1").arg(outChar&0xff,2,16,QLatin1Char('0')).toUpper(); buf +=str; } return buf; }
showHEX(a);
3、十进制转为ascll字符
int dec = 65;
char ch = dec;
QString decToStr = QString(ch);
4、double或float类型转换为可控制精度的10进制字符串
double dou = 1234.56789;
//arg()的参数含义为:1.要转换的double或float型数据 2.目标数据的位宽,填0即可
//3.格式控制,’ 4.精度,即精确到小数点后的位数,最后一位会四舍五入
QString douToStr = QString("%1").arg(dou,0,‘f’,3); //douToStr = “1234.568”;
5、int转2进制 二进制数 组合成16进制数
int a=2;
QString b = QString("%1").arg(a,2,2,QLatin1Char(’ 0’));//转为2进制
QString hex = QString("%1%2%3%4").arg(“10”).arg(b).arg(“01”).arg(“11”);
//四个二进制数组合 即 10 10 01 11
二进制转16进制 第一种方法:
bool ok;
int c = hex.toint(&ok,2);//先转为10进制
Qstring d = QString("%1").arg(c,2,16,QLatin1Char(‘0’)); //10进制转16进制
第二种方法
QString new_hex=BinToHex(hex); //将新的16进制显示出来
//二进制转16进制
QString BinToHex(QString strBin)
{
QString strout;
QString strH,strL;
QString stroutH,stroutL;
qDebug()<<strBin;
strH=strBin.mid(0,4);
strL=strBin.mid(4,4);
if(strH=="1111")
{
stroutH="F";
}
if(strH=="1110")
{
stroutH="E";
}
if(strH=="1101")
{
stroutH="D";
}
if(strH=="1100")
{
stroutH="C";
}
if(strH=="1011")
{
stroutH="B";
}
if(strH=="1010")
{
stroutH="A";
}
if(strH=="1001")
{
stroutH="9";
}
if(strH=="1000")
{
stroutH="8";
}
if(strH=="0111")
{
stroutH="7";
}
if(strH=="0100")
{
stroutH="6";
}
if(strH=="0101")
{
stroutH="5";
}
if(strH=="0100")
{
stroutH="4";
}
if(strH=="0011")
{
stroutH="3";
}
if(strH=="0010")
{
stroutH="2";
}
if(strH=="0001")
{
stroutH="1";
}
if(strH=="0000")
{
stroutH="0";
}
if(strL=="1111")
{
stroutL="F";
}
if(strL=="1110")
{
stroutL="E";
}
if(strL=="1101")
{
stroutL="D";
}
if(strL=="1100")
{
stroutL="C";
}
if(strL=="1011")
{
stroutL="B";
}
if(strL=="1010")
{
stroutL="A";
}
if(strL=="1001")
{
stroutL="9";
}
if(strL=="1000")
{
stroutL="8";
}
if(strL=="0111")
{
stroutL="7";
}
if(strL=="0100")
{
stroutL="6";
}
if(strL=="0101")
{
stroutL="5";
}
if(strL=="0100")
{
stroutL="4";
}
if(strL=="0011")
{
stroutL="3";
}
if(strL=="0010")
{
stroutL="2";
}
if(strL=="0001")
{
stroutL="1";
}
if(strL=="0000")
{
stroutL="0";
}
strout=stroutH+stroutL;
qDebug()<<strout;
return strout;
}