【发布时间】:2014-02-24 09:42:04
【问题描述】:
我在 2 个不同的项目中有相同的代码。 Qstring::number(data.toLong(&ok,2),16) 在一个项目中有效,而在另一个项目中则无效。有谁知道可能是什么原因?代码如下
1) unsigned short status;
2) long int setting;
3) bool ok;
4) QString data_selected;
5) data_selected = lineEdit_data->text(); //get the binary value
6) data_selected = QString::number(data_selected.toLong(&ok, 2), 16); //convert binary value to hex value
7) setting = data_selected.toLong(&ok, 16); //convert string to integer
在第 5 行,我从 lineEdit 获取数据。这条线工作正常。我刚刚插入了一个新的文本编辑框并在那里显示了数据,在那里我可以看到数据。我的数据为“1000000000001000”。然后我执行第 6 行,它的输出在第一种情况下是“8008”,在另一个项目中是“0”。这就是问题。代码完全相同。我已经复制粘贴了。但是在调试中我可以看到这种差异。请问谁能告诉我为什么会这样?
【问题讨论】:
-
零结果表示
toLong转换失败。最好拆分第 6 行以查看toLong返回的内容并检查ok变量。在第 nr 6 行中,我还将使用trimmed()方法去除任何白色字符(以防万一)。添加有关使用的 Qt 版本和平台的信息。 -
data_selected 的原始值是多少?还要检查转换后
ok的值。 -
@Marek:这应该是命令吗? QString::number(data_selected.trimmed().toLong(&ok, 2), 16);
-
@弗兰克:data_selected = "1000000000001000"