串口使用中会经常用到。目前使用到的是QByteArray::number(源数据 ,目标输出的进制)
。作下记录,以供日后参考。
转制方法有很多,这只是其中一种,有其他QT的进制转换方法,欢迎评论区交流!
十进制转为十六进制(tmp[0] = ‘0x14’)
int num = 20;
qDebug() << QByteArray::fromHex( QByteArray::number(num,16) );
QByteArray tmp;
tmp.append(num );
long a = 63;
QString s = QString::number(a, 16);
QString t = QString::number(a, 16).toUpper();
十六转十进制
int b = 0x70;
QString number_tmp = QString::number(b,10);
qDebug() <<number_tmp.toUInt();
QByteArray tmp;
tmp[0] = 0x1a;
QString msg = tmp.toHex();
int num = msg.toInt(NULL,16);
qDebug() << "msg :" << msg << "; num : " << num;
另外:QString.toUInt()
可以指定任何进制(如十六进制)输出为十进制
如指定 【输入格式为16进制】的整型数
QString str = "FF";
bool ok;
uint hex = str.toUInt(&ok, 16);
uint dec = str.toUInt(&ok, 10);
记录一个组装QByteArray数组命令的过程 - QT 串口通信
QByteArray AT_cmd;
AT_cmd.resize(buf_len);
AT_cmd.clear();
AT_cmd.append(QByteArray::fromHex("21547A"));
AT_cmd.append(QByteArray::fromHex( tmp.toHex().toUpper() ) );
AT_cmd.append(QByteArray::fromHex("0x64") );
AT_cmd.append(QByteArray::fromHex(QString::number(number.toUInt(),16).toLatin1()) );
uint8_t crc[2] = {0};
check_sum(crc,(unsigned char *)AT_cmd.data(),AT_cmd.length()-2);
AT_cmd.append(QByteArray::fromHex( QByteArray::number(crc[0],16) ) );
AT_cmd.append(QByteArray::fromHex( QByteArray::number(crc[1],16) ) );
AT_cmd.append(QByteArray::fromHex("22"));
AT_cmd.append(QByteArray::fromHex("44"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)