QByteArray::indexof 始终返回 1 (Qt)

问题描述 投票:0回答:1

   
    QByteArray bItem;
    QByteArray alpha("0123456789ABCDEF");
    quint8 iItemHi=0, iItemLo=0, index;

    QTableWidgetItem *hexItem = new QTableWidgetItem;
    hexItem = ui->hexSectorDisplay->item(x,y);
    bItem = hexItem->data(Qt::EditRole).toByteArray();
    if(bItem.size() == 1) {
        if(index=alpha.indexOf(bItem.at(0), 0) != -1) {
            iItemLo = index;
        } else {
            iItemLo=0;
        }

我有上面的代码从 QTableWidget (hexSectorDisplay) 复制每个单元格,然后将其转换为 QByteArray (bItem - 可以是代表十六进制字节的一个或两个字符),然后在另一个 QByteArray (alpha) 中查找每个字符并使用返回的索引值作为十六进制字符的数值。无论如何,问题是,无论查找什么字符,“alpha.indexOf(bItem.at(0), 0)”总是返回 1(而不是 -1)。

你知道我在这里做错了什么吗?如果我的代码很混乱,请原谅,我不是一个经验丰富的 C++/Qt 程序员。

我正在使用 Qt v5.15.2 和 MSVC2019

indexof qbytearray
1个回答
0
投票

好的,我发现问题了。当我从 if 语句中取出表达式“index=alpha.indexOf(bItem.at(0), 0)”并按如下方式重写代码时,它起作用了:

index=alpha.indexOf(bItem.at(0), 0);

if(索引!= -1) { ... } 别的 { ... }

© www.soinside.com 2019 - 2024. All rights reserved.