【发布时间】:2019-09-21 23:03:01
【问题描述】:
我正在使用 QStringList 从配置文件中读取数百行/数千行。我想将每一行的 4 个字符串转换为 4 个十六进制值,将这些值连接到一个十六进制值并通过 UART 发送到(STM32)uC。
示例: 从配置中读取:1200,1200,1200,1200 -> 以逗号分隔:1200 1200 1200 1200 -> 转换为十六进制:04B0 04B0 04B0 04B0 -> 连接十六进制值:04B004B004B004B0强>
if(lines.at(i).contains(",")){
while(lines.at(i+j) != "\n"){
QStringList speed_chunks = lines.at(i+j).split(",");
uart = speed_chunks.at(3)+speed_chunks.at(4)+speed_chunks.at(5)+speed_chunks.at(6)+"\0";
m1 = speed_chunks.at(3).toInt();
m1h = QString::number(m1, 16).toUpper();
m2 = speed_chunks.at(4).toInt();
m2h = QString::number(m2, 16).toUpper();
m3 = speed_chunks.at(5).toInt();
m3h = QString::number(m3, 16).toUpper();
m4 = speed_chunks.at(6).toInt();
m4h = QString::number(m4, 16).toUpper();
uart_hex = m1h+m2h+m3h+m4h +"\0"; WRONG!!!
//m1hm2hm3hm4h needed, not plus function!
qDebug()<<uart_hex;
m_serial.write(uart()); ?
}
}
这是最简单的方法吗?非常感谢!
【问题讨论】:
-
您的输入中总是有前导零吗?比如0001,0022,1111,0100?
-
连接字符串很明显
"0001" "0002"是"00010002"。但是“十六进制值”建议使用整数,而连接整数的意义要小得多。数字 01 与数字 1 相同。 -
您好,1000和2000之间有不同的PWM值。PWM值是针对4个电机调速器的。每个电机速度控制器每 100 毫秒获得另一个值,因此可能有不同的组合:1245,1587,1698,1478....
-
所以我想先将值更改为十六进制:1245 到 04DD,1587 到 0633... -> 然后连接到 04DD0633... -> 然后发送值。