QByteArray konstant
-
Hallo,
ich benötige ein QByteArray immer wieder. Dazu mal 2 Fragen.Kann ich es gleich mit Werten initialisieren, statt das zu schreiben:
QByteArray array;
array.push_back(1);
array.push_back("Ä");
...Und kann ich es irgendwie als Konstante deklarieren?
-
QByteArray arr("1Ä hä i bi ähäää da Stoibaaaa ähhhh");
Und natürlich kannst du ein so ein Objekt auch const deklarieren.
-
Ja nur ich möchte ja verschiedene Elemente darin haben. Jetzt ist die 1 ja ein char und kein int.
-
Die 1 ist auch keine 1 mehr, wenn du die push_back anhängst. Die 1 wird in nen char konvertiert. Schau mal, welche Varianten von push_back es gibt.
Was willst du denn eigentlich erreichen? Und was verstehst du unter "verschiedene Elemente drin haben"?
-
Also die 1 hat bei mir noch den Wert 0x01 im Array. Also scheint es zu gehen. Mit array.push_back(1); bekomme ich eine 1 und mit array.push_back('1'); eine 49, also ASCII 1.
-
Es geht mir darum, dass das im QByteArray als char interpretiert wird. und ein push_back(88) ist dann als char ein "X", und beim Auslesen musst du wieder wissen, dass an dieser Stelle ein int steht, und kein char.
Was hast du denn genau vor? Wäre eine eigene Datenstruktur eine Alternative?
Ansonsten bastel dir eine Funktion, die dir das QByteArray generiert, wenn du unbedingt einen int anhängen willst. Mit der Funktion kannst du dann auch ein const QByteArray initialisieren, damit du bei der Verwendung nicht immer die Funktion laufen lassen musst.namespace { QByteArray createBA() { QByteArray ba; ba.push_back(1); ba.push_back('Ä'); return ba; } const QByteArray bar(createBA()); }
-
Also gibt es ohne selber basteln keine Möglichkeit, das Array gleich zu initialisieren?
Ich brauche es für eine Methode, der ich u.A. eine 1 übergeben muss.
-
Ihr solltet klarer mit den Begriffen umgehen. Ein char ist erstmal auch nur ein Zahlenwert. Der Unterschied zu int besteht a( im Wertebereich und b) in der Interpretation bei der Ausgabe. Wenn man also eine 88 in ein char schreibt ist auch eine 88 drin, nur bei der Ausgabe wird uminterpretiert.
-
char array[3]={1,2,0};
sollte sich in ein Byte Array konvertieren lassen. So kannst du nur keine 0 übergeben, da die ja den CString terminiert.