qbyTearray转换为char(不是char*或constchar*)

QByteArray conversion to char (not char* or constChar*)

本文关键字:char constchar 转换 qbyTearray 不是      更新时间:2023-10-16

我有一个问题,该问题已经困扰了一个多小时,因此决定在这里询问。是否有适当的方法将QbyTearray转换为char?我设法将其作为char*工作*,但我需要将其作为char。

这是一个代码位,我将qbyTearray并将其转换为char*:

    QByteArray MainWindow::checkSum(QByteArray &b)
    {
        qint16 b_len = b.length();
        char xor = 0;
        for ( int i = 0 ; i < b_len ; i ++ )
        {
           xor = xor ^ b[i];
        }
        return b;
    }
    void MainWindow::on_flipHorzButton_clicked()
    {
         // getFirmwareVersion = { 0xe6, 0x05, 0x12, 0x00}
         QByteArray str;
         char ch = checkSum(str).data();
         str[0] =0xaa;
         str[1] =0xbb;
         str[2] =0xcc;
         str[3] =0xdd;
         str[4] = ch;
         printf("%s", str[4]);
         serial.write(str, 5); 
}

我应该尝试将 CH 转换为char吗?如果是,我应该如何做?

由于某种原因,我必须将" xor"重命名为其他。

对于特定问题,您必须更改该行:

char ch = checkSum(str).data()[0];

使其从qbyTearray返回char*的第一个字符

您的代码不起作用,因为 XOR 是保留的关键字:XOR将变量重命名为其他东西。