我有一个问题已经困扰了一个多小时,所以我决定在这里问一问。是否有适当的方法将QByteArray转换为字符?我设法使它工作为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?如果是,我该怎么做?
发布于 2016-12-01 09:33:13
出于某种原因,我不得不将"xor“重命名为其他东西。
对于您的具体问题,您必须更改这一行:
char ch = checkSum(str).data()[0];以便从QByteArray返回char*的第一个字符
发布于 2016-12-01 10:23:47
您的代码不工作,因为xor是保留关键字:异或将变量重命名为其他内容。
https://stackoverflow.com/questions/40906839
复制相似问题