• 4561阅读
  • 5回复

[提问]串口发来数据转换的问题 [复制链接]

上一主题 下一主题
离线maxuejia
 

只看楼主 倒序阅读 楼主  发表于: 2013-12-31


我通过串口发来一个8位的原始数据,需要转换成实际的电压在显示,原始值是temp=125,对应的字符是‘}’,转换公式为
v=temp*3.3/256,显示在lineedit上
    QByteArray temp = myCom->readAll();
    //读取串口缓冲区的所有数据给临时变量temp
//   qDebug()<<temp;


    int i=temp.toInt();
    float v=3.3*i/256;
    QString strint=QString("%1").arg(v);
    ui->lineEdit_2->setText(strint)


这是我写的代码,temp是原始数据,接收到的确实是‘}’,但是我想把他转换为int型的125,i却为0了


请问我该怎么解决?
离线realfan

只看该作者 1楼 发表于: 2013-12-31
解决方法是把int i=temp.toInt();改成int i=temp.at(0);  

char ch='}';
与char ch = 125;
是等价的。


toInt转换与char的值是不同的。比如‘9’,放在字串里,toInt得到9,但‘9’本身对应的十进制是57.请注意二者区别。你代码用的是字符对应的10进制数。

离线lxdmp

只看该作者 2楼 发表于: 2013-12-31
toInt()方法是标准C里的atoi()的道理。

这里直接char *data = temp.data(); int i = (int)(*data)就好。
离线maxuejia

只看该作者 3楼 发表于: 2014-01-01
回 1楼(realfan) 的帖子
谢谢你的回答,完全通过了
离线maxuejia

只看该作者 4楼 发表于: 2014-01-01
回 2楼(lxdmp) 的帖子
谢谢你的帮助,解决问题了
离线maxuejia

只看该作者 5楼 发表于: 2017-03-18
当年好弱智啊
快速回复
限100 字节
 
上一个 下一个