从QString转换为十六进制

时间:2014-01-31 16:00:01

标签: qt qstring qt4.8

我在两个不同的项目中使用相同的代码。 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'。这就是问题。代码完全一样。我复制并粘贴了。但在调试中,我可以看到这种差异。请有人能告诉我为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我认为答案中的评论很清楚 纠正这样的代码来检测问题是什么:

ulong setting;
bool ok;
data_selected = data_selected.trimmed(); // first try without this line
ulong value = data_selected.toULong(&ok, 2);
if (ok) {
    data_selected = QString::number(value, 16);
    setting = data_selected.toULong(&ok, 16);
} else {
    data_selected = "convertion error";
}