c++ - Qt - QStringList 到 QByteArray

标签 c++ qt qstring qbytearray

QStringList 转换为 QByteArray 的最有效方法是什么?

我发现了许多类似转换的例子,但从来没有我需要的例子,或者只是不必要地太复杂了。


代码清理字符串输入,然后将其转换为 QByteArray。我正在为后半部分苦苦挣扎。

void MainWindow::on_suicideButton_clicked()
{
    QString input = ui->lineEdit->text();
    try{
        if(ui->lineEdit->text().contains("0x")||ui->lineEdit->text().contains(",")||ui->lineEdit->text().contains("-"))
        {
            input = input.replace("0x","");
            if (input.contains(',')) input = input.replace(",", "");
            // QString trim = input.trimmed();
            // input = trim;//.split(',', ' ', '-');
            QStringList inputArray = input.split('-');
            QByteArray output = inputArray;
        }
        //printf("%s\n", input);

        ui->lineEdit->setText(input);
    }
    catch (const std::bad_alloc &) {input = " ";}
}

QStringList inputArray = input.split('-'); 很重要(或者至少我认为如此),因为我需要将字节拆分为单独的 block 以便对它们执行各种操作。


这里是一个例子,为了让你看到我想做什么样的操作:

char MainWindow::checkSum(QByteArray &b)
{
    char val = 0x00;
    char i;
    foreach (i, b)
    {
       val ^= i;
    }

    return val;
}

最佳答案

用一个 QDataStream 来序列化字符串列表怎么样?

// Fill the data buffer
QByteArray data;
QStringList list{"foo", "bar", "foobar"};
QDataStream dataStreamWrite(&data, QIODevice::WriteOnly);
dataStreamWrite << list;

// Do whatever you want with the raw data

// And if you want to convert it back to a QStringList
QDataStream dataStreamRead(data);
QStringList list2;
dataStreamRead >> list2;

关于c++ - Qt - QStringList 到 QByteArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41759371/

相关文章:

c++ - OpenCV如何表示具有2个两个值的线?

c++ - opencv - VideoWriter - 如何在发布 VideoWriter 后附加新图像?

c++ - 如何从预编译的 dll 中删除 list

c++ - Qt 中的消息未被翻译

c++ - QUrl toPercentEncoding() 小写十六进制

c++ - 从头开始进行多目录项目的 Cmake

c++ - QScriptEngine评估数字c++的平方或立方

c++ - 如何将鼠标/光标添加到非触摸手机的 QML 应用程序?

c++ - 如何打印 QStringListModel 内容?

c++ - 现有 C++ 项目的 Qt UI