C++ QByteArray到char的转换(不是char*或constChar*)

C++ QByteArray到char的转换(不是char*或constChar*),c++,qt,char,serial-port,qbytearray,C++,Qt,Char,Serial Port,Qbytearray,我有一个问题已经被窃听了一个多小时,决定在这里提问。有没有合适的方法将QByteArray转换为char?我设法让它以字符的形式工作,但我需要以字符的形式传递它 这里是一个代码位,我将qbytearray转换为char*: QByteArray MainWindow::checkSum(QByteArray &b) { qint16 b_len = b.length(); char xor = 0; for ( int

我有一个问题已经被窃听了一个多小时,决定在这里提问。有没有合适的方法将QByteArray转换为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); 
}
QByteArray主窗口::校验和(QByteArray&b)
{
qint16 b_len=b.长度();
char-xor=0;
对于(int i=0;i

我是否应该尝试将ch转换为char?如果是,我应该怎么做?

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

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

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

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

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

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

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

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

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

您的代码不能工作,因为异或是一个保留关键字:
将该变量重命名为其他变量。

不清楚您想要什么。just char-是添加额外代码过程中的1个字符。给我一秒钟为什么?你想要一个字符做什么?一个
char
提供的单个字节中怎么可能包含整个字符串?您想要解决的实际问题是什么()?如果您需要将单个字符传递给某个方法/函数,请确保
ch
指向您感兴趣的字符,然后简单地取消引用(
*ch
)我刚刚添加了我想要添加的其余代码。我匆忙地把问题贴了出来,没有加上我想要的其他东西,对此我深表歉意!有点不清楚你想要什么。just char-是添加额外代码过程中的1个字符。给我一秒钟为什么?你想要一个字符做什么?一个
char
提供的单个字节中怎么可能包含整个字符串?您想要解决的实际问题是什么()?如果您需要将单个字符传递给某个方法/函数,请确保
ch
指向您感兴趣的字符,然后简单地取消引用(
*ch
)我刚刚添加了我想要添加的其余代码。我匆忙地把问题贴了出来,没有加上我想要的其他东西,对此我深表歉意!正如PsiX所指出的,小心使用“xor”。这是一个保留字,将来可能会引起问题。正如PsiX所指出的,小心使用“xor”。这是一个保留字,将来可能会引起问题。