C++ QByteArray到char的转换(不是char*或constChar*)
我有一个问题已经被窃听了一个多小时,决定在这里提问。有没有合适的方法将QByteArray转换为char?我设法让它以字符的形式工作,但我需要以字符的形式传递它 这里是一个代码位,我将qbytearray转换为char*: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 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”。这是一个保留字,将来可能会引起问题。