2016-12-01 5 views
0

Ich habe ein Problem, das seit über einer Stunde abgehört hat und beschlossen, nur hier zu fragen. Gibt es eine geeignete Möglichkeit, ein QByteArray in ein char umzuwandeln? Ich habe es geschafft, es als Char * arbeiten zu lassen, aber ich muss es als Char übergeben.QByteArray Umwandlung in Char (nicht char * oder constChar *)

ist hier ein Code-Bit, wo ich die QByteArray nehmen und wandeln es * auf 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); 
} 

Soll ich versuchen, ch verkohlen zu konvertieren? Wenn ja, wie soll ich das machen?

+2

Es ist irgendwie unklar, was Sie wollen. nur char - ist 1 Zeichen – Starl1ght

+0

Ich bin dabei, zusätzlichen Code hinzuzufügen. Gib mir eine Sekunde. :) –

+0

Warum? Wofür möchtest du ein * einzelnes Zeichen *? Wie könnte eine ganze Zeichenkette jemals in das einzelne Byte passen, das ein 'char' liefert? Was ist das * aktuelle * Problem, das Sie lösen möchten ([Lesen über das XY-Problem] (http://xyproduk.info/))? –

Antwort

1

Aus irgendeinem Grund musste ich "Xor" in etwas anderes umbenennen.

Für Ihr spezielles Problem, müssen Sie diese Zeile:

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

, dass es das erste Zeichen des char * von dem QByteArray

+0

Es hat funktioniert! Ich danke dir sehr!!! –

+1

Wie PsiX auch bemerkte, sei vorsichtig mit deinem "xor". Es ist ein reserviertes Wort und könnte Probleme in der Zukunft verursachen. –

0

gibt Ihren Code nicht als xor funktioniert ist ein reserviertes Schlüsselwort: xor Benennen Sie die Variable in etwas anderes um.