[gelöst]QByteArray auslesen

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
meinhana
Beiträge: 3
Registriert: 15. Juli 2014 09:28

[gelöst]QByteArray auslesen

Beitrag von meinhana »

Hallo Leute,

ich steh total auf dem Schlauch...

Ich habe eine QByteArray, dieses Array möchte ich auslesen, oder besser gesagt,
ich möchte jeweiles 2Byte in eine/mehrere Variable/n schreiben..
Also händisch irgendwie so -

Code: Alles auswählen

int hoehe = array[41] & array[42]; 

Mir ist klar das ich dafür eine Schleife benötige, aber ich komm einfach nicht drauf wie ich das man besten realisiere... :oops:
Zuletzt geändert von meinhana am 4. August 2014 11:04, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QByteArray auslesen

Beitrag von Christian81 »

Du musst schon wissen wie die Daten aus den QByteArray drin stehen um sie korrekt auszulesen. Wenn in 41 die höherwertigen Bits und in 42 die niederwertigen Bits stehen dann kannst Du es z.B. so machen:

Code: Alles auswählen

unsigned int a = ba[41];
unsigned int b = ba[42];
unsigned int c = a >> 8 + b;
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
meinhana
Beiträge: 3
Registriert: 15. Juli 2014 09:28

Re: QByteArray auslesen

Beitrag von meinhana »

Habe mich damit ein bisschen auseinander gesetzt und es wie folgt gelöst..

Code: Alles auswählen

	
union con
{
	byte byte_array[2];
	unsigned short _short;
};

con c;
	c.byte_array[0] = size1;
	c.byte_array[1] = size2;

	int groesse = c._short;


Nun ist meine Frage -> Ich habe nun im Array[55] ja 1 Byte drinne stehen, aber ich brauche 4 Bit,
wie bekomme ich nur die 4 Bit?
meinhana
Beiträge: 3
Registriert: 15. Juli 2014 09:28

Re: QByteArray auslesen

Beitrag von meinhana »

...
Nun da mir niemand geantwortet hat, habe ich gesucht und gefunden :P

Code: Alles auswählen

		byte h = b & 0xf;
		byte l = (b > 4) & 0xf;
alainstgt
Beiträge: 19
Registriert: 22. August 2008 11:37
Wohnort: Stuttgart

Re: [gelöst]QByteArray auslesen

Beitrag von alainstgt »

am elegantesten geht es mit einem Zeiger:

Code: Alles auswählen

QByteArray myArray;
// myArray füllen ...
qint16* p = myArray.data();
for ( int i = 0; i <= myArray.count() / sizeof( p[0] ); ++i )
    qDebug() << "p[" << i << "] =" << p[i];
benutze eventuell die Funktion qToLittleEndian() bzw. verwandte Funktionen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: [gelöst]QByteArray auslesen

Beitrag von Christian81 »

alainstgt hat geschrieben:am elegantesten geht es mit einem Zeiger:

Code: Alles auswählen

QByteArray myArray;
// myArray füllen ...
qint16* p = myArray.data();
for ( int i = 0; i <= myArray.count() / sizeof( p[0] ); ++i )
    qDebug() << "p[" << i << "] =" << p[i];
Na das würde ich mir nochmal überlegen ob da das rauskommt was rauskommen soll. Vom Out-Of-Bounds Zugriff bei i == myArray.count() / sizeof(p[0]) mal ganz abgesehen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten