QByteArray 转换为 char(不是 char* 或 constChar*)
QByteArray conversion to char (not char* or constChar*)
我有一个问题已经困扰了一个多小时,所以决定在这里提问。是否有将 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];
所以它returns QByteArray
中char*的第一个字符
您的代码不起作用,因为 xor 是保留关键字:xor
将变量重命名为其他名称。
我有一个问题已经困扰了一个多小时,所以决定在这里提问。是否有将 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];
所以它returns QByteArray
中char*的第一个字符您的代码不起作用,因为 xor 是保留关键字:xor 将变量重命名为其他名称。