QByteArray转换为char(不是char *或constChar *)

时间:2016-12-01 09:28:16

标签: c++ qt char serial-port qbytearray

我有一个问题已经超过一个小时,并决定在这里问。有没有一种将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吗?如果是的话,我应该怎么做?

2 个答案:

答案 0 :(得分:1)

出于某种原因,我不得不将“xor”重命名为其他内容。

针对您的具体问题,您必须更改该行:

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

这样它就会从QByteArray

返回char *的第​​一个字符

答案 1 :(得分:0)

您的代码不起作用 xor 是保留关键字:xor 将变量重命名为其他内容。