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

标签 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 吗?如果是,我应该怎么做?

最佳答案

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

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

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

因此它从 QByteArray 返回 char* 的第一个字符

关于c++ - QByteArray 转换为 char(不是 char* 或 constChar*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40906839/

相关文章:

android - 使用 gstreamer 在 android 上录制音频(使用 Qt5)

c++ - 类型别名和 operator<< 使用 ostream_iterator 重载导致无效操作数

c++ - 找不到 ahadmin.h 文件

qt - 用最新的QT编译libwebsocket

arrays - 将空格插入 char 数组

c++ - cpp dll char指针分配,写入内存访问冲突

有人可以澄清我对 C 字符串、数组与指针的混淆吗

c++ - 如何在现代 opengl 中处理正交投影中的照明?

c++ - 超出范围时是否删除了指向堆栈对象的指针?

cocoa - 是否可以在 QT 中使用平台 native 代码(即 Cocoa)构建 GUI?