Hi,
ich bin hier fast am Verzweifeln, liegt vielleicht auch daran, dass ich mit unsigned char so gut wie noch nie was gemacht habe oder diese Problematik so nicht kannte, weil ich den immer gleich weiter verwendet habe.
Also ich habe einen unsigned char size = 140 und er gibt in Hex folgende Ausgabe:
30 81 89 2 81 81 0 b8 88 f ee e1 85 48 c8 64 3 ec 7b 11 11 f8 a4 df e9 34 1 6b d5 d2 61 c0 64 ae f4 ec d7 36 bb c7 a7 23 be 34 36 2 ae a7 5 32 c6 65 5e cb 8b 19 1e f3 b0 5c 45 99 63 a3 d9 7 9c 58 54 8d 89 e7 e e0 52 77 5b 2d 24 24 ca 49 65 fd 21 a9 db 6d 30 8f 8e 1d 11 cd 46 30 44 4a fe 14 94 f0 41 28 1c 43 2b 5b fc df 81 60 9d 7d a1 a8 a8 de 34 b2 22 8 4d df 79 c 37 9 32 e2 c 4e 36 72 1f 2 3 1 0 1
So, wenn ich das jetzt mit QByteArray( ( const char *)chr, size ) übernehme gibt mit mein QByteArray folgende Hex Ausgabe:
30 ffffff81 ffffff89 2 ffffff81 ffffff81 0 ffffffb8 ffffff88 f ffffffee ffffffe1 ffffff85 48 ffffffc8 64 3 ffffffec 7b 11 11 fffffff8 ffffffa4 ffffffdf ffffffe9 34 1 6b ffffffd5 ffffffd2 61 ffffffc0 64 ffffffae fffffff4 ffffffec ffffffd7 36 ffffffbb ffffffc7 ffffffa7 23 ffffffbe 34 36 2 ffffffae ffffffa7 5 32 ffffffc6 65 5e ffffffcb ffffff8b 19 1e fffffff3 ffffffb0 5c 45 ffffff99 63 ffffffa3 ffffffd9 7 ffffff9c 58 54 ffffff8d ffffff89 ffffffe7 e ffffffe0 52 77 5b 2d 24 24 ffffffca 49 65 fffffffd 21 ffffffa9 ffffffdb 6d 30 ffffff8f ffffff8e 1d 11 ffffffcd 46 30 44 4a fffffffe 14 ffffff94 fffffff0 41 28 1c 43 2b 5b fffffffc ffffffdf ffffff81 60 ffffff9d 7d ffffffa1 ffffffa8 ffffffa8 ffffffde 34 ffffffb2 22 8 4d ffffffdf 79 c 37 9 32 ffffffe2 c 4e 36 72 1f 2 3 1 0 1
So, wieso ist das so? Ich kann das so aber nicht wirklich gebrauchen, weil ich eben nur die Daten aus dem unsigned char * über einen TCPSocket verschicken will, weil das eben nicht anders geht auf der anderen Seite. Wie kann ich das lösen, damit er das vollständig korrekt auch im QByteArray so behandelt? Denn ich verschicke auch als QByteArray.
Danke, für alle Helfenden.
unsigned char * in QByteArray
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Sieht doch gar nicht so verkehrt aus. Da QByteArray::at() (oder []) ein signed char* zurückgibt und Du wahrscheinlich bei der Ausgabe es nicht in ein unsigned char konvertierst werden eben alle Daten >= 0x80 als negative Werte dargestllt. Probier mal (unsigned char)QByteArray.at() bei der Ausgabe. Der Unterschie ziwschen signed und unsigned char liegt ja nur in der Form der Darsellung.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten: