标题:串口发来数据转换的问题
作者:maxuejia
日期:2013-12-31 18:58
内容:
我通过串口发来一个8位的原始数据,需要转换成实际的电压在显示,原始值是temp=125,对应的字符是‘}’,转换公式为
v=temp*3.3/256,显示在lineedit上
QByteArray temp = myCom->readAll();
//读取串口缓冲区的所有数据给临时变量temp
// qDebug()setText(strint)
这是我写的代码,temp是原始数据,接收到的确实是‘}’,但是我想把他转换为int型的125,i却为0了
请问我该怎么解决?
#1 [realfan 12-31 20:48]
解决方法是把int i=temp.toInt();改成int i=temp.at(0);
char ch='}';
与char ch = 125;
是等价的。
toInt转换与char的值是不同的。比如‘9’,放在字串里,toInt得到9,但‘9’本身对应的十进制是57.请注意二者区别。你代码用的是字符对应的10进制数。
#2 [lxdmp 12-31 21:03]
toInt()方法是标准C里的atoi()的道理。
这里直接char *data = temp.data(); int i = (int)(*data)就好。
#3 回 1楼(realfan) 的帖子 [maxuejia 01-01 16:29]
谢谢你的回答,完全通过了
#4 回 2楼(lxdmp) 的帖子 [maxuejia 01-01 16:30]
谢谢你的帮助,解决问题了
#5 [maxuejia 03-18 23:13]
当年好弱智啊