分割字符串QString到QStringList,将弧度转化为度数(度,分,秒)

1.分割字符串QString到QStringList

接收数据 "%R1P,0,0:0,4.455493696036638,2.050167981242538,0.000002354383469,20981534,0.000099052486343,-0.000021364"
 //假设数据格式是固定的并且以,分割
        QStringList parts=dataString.split(",");
        //检查是否有足够数据部分
        if(parts.size()>=5){
            //提取第五和第六部分(索引为4和5),他们包含弧度值
            QString value1Str=parts[3].trimmed();//trimmed()去除前后的空格
            QString value2Str=parts[4].trimmed();
                      qDebug()<<"1:"<<value1Str;
                      qDebug()<<"2:"<<value2Str;
            // 尝试将字符串转换为浮点数
          bool ok1 = false;
          bool ok2 = false;
          double value1 = value1Str.toDouble(&ok1);
          double value2 = value2Str.toDouble(&ok2);
//          qDebug()<<"1:"<<value1;
//          qDebug()<<"2:"<<value2;

在这里插入图片描述

// 将弧度转换为度
              double degrees1 = value1 * (180.0 / M_PI);
              double degrees2 = value2 * (180.0 / M_PI);

              // 计算度、分、秒
              int wholeDegrees1 = static_cast<int>(degrees1);
              double minutes1 = (degrees1 - wholeDegrees1) * 60;
              int wholeMinutes1 = static_cast<int>(minutes1);
              double seconds1 = (minutes1 - wholeMinutes1) * 60;

              int wholeDegrees2 = static_cast<int>(degrees2);
              double minutes2 = (degrees2 - wholeDegrees2) * 60;
              int wholeMinutes2 = static_cast<int>(minutes2);
              double seconds2 = (minutes2 - wholeMinutes2) * 60;

              // 格式化输出
              QString dms1 = QString("%1°%2'%3\"").arg(wholeDegrees1).arg(wholeMinutes1, 2, 10, QChar('0')).arg(seconds1, 5, 'f', 1);
              QString dms2 = QString("%1°%2'%3\"").arg(wholeDegrees2).arg(wholeMinutes2, 2, 10, QChar('0')).arg(seconds2, 5, 'f', 1);

              // 打印和显示转换后的度、分、秒
              qDebug() << "水平角:" << dms1;
              qDebug() << "垂直角:" << dms2;

              // 在文本编辑框中显示提取并转换后的数据
              ui->TeditRecv->append(QString("水平角: %1").arg(dms1));
              ui->TeditRecv->append(QString("垂直角: %1").arg(dms2));
  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想要入门的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值