将LineEdit中输入的字符串存储在变量中,将改便改良转为int型可进行逻辑运算,再把这个数转为16进制。
QString::number(dec,16)dec转换为一个十六进制字符串。第二个参数 16表示要将整数转换为十六进制格式。
.toUpper():将整个字符串转换为大写形式。这样可以保证输出的十六进制字符串中的字母为大写形式。最终,变量hex中存储的是一个大写形式的十六进制字符串,表示了对应十进制数dec的十六进制值。
用rightJustified(2, '0')将此变量右对齐,并在左侧填充指定字符(此次为0),使字符串长度为2
例如,如果hex的值为 "A1",则经过rightJustified(2, '0')处理后,midHex的值将变为 "A1";如果hex的值为 "B",则经过处理后,midHex的值将变为 "0B"。
将字符串按照2个字符为一组拆分并存储再hexSegments中。
用.join()将hexSegments中的每个字符串连接起来,join的参数就是连接字符串之间的分隔符,这里使用空格进行连接
在串口助手中进行数据处理时可用到此转换方法
QString input = ui->lineEdit->text();
bool ok;
int dec = input.toInt(&ok);
if (!ok)
{
return;
}
// 将十进制转换为十六进制
QString hex = QString::number(dec,16).toUpper();
QString midHex = hex.rightJustified(2, '0'); //2位数,不足补零
QString afterHex;
afterHex = "7B0002"+midHex+"0000007D0D0A";
QStringList hexSegments;
for (int i = 0; i < afterHex.size(); i += 2)
{
hexSegments.append(afterHex.mid(i, 2));
}
QString overHex = hexSegments.join(" "); //每2位数+空格