char (hex-int) aus qbytearray in int umwandeln

hansii

Grünschnabel
wunderschoenen guten tag

nachdem ich erfolgreich mittels (char *)&int einen integer wert als 4 byte hex in eine datei schreiben konnte (ueber den umweg eines QByteArrays), gelingt es mir nun nicht, nach dem auslesen (wiederrum ueber ein QByteArray) den integer wert zu erhalten.

in der datei befindet sich der hex wert im ganzen zeichenweise gespiegelt (also aus 0x00030D40 wird 0x400D0300)

die methode 'toInt' des QByteArrays schlaegt bei anwendung auf den wert fehl (in beiden varianten .. die 'entspiegelung' hab ich ueber ein temporaeres QByteArray auf holzfaellerart geloest)

C++:
	QByteArray _tmp;
	_tmp[0] = tmp[3];
	_tmp[1] = tmp[2];
	_tmp[2] = tmp[1];
	_tmp[3] = tmp[0];

auch der versuch mit atoi, casten, stringstream oder sscanf den int wert zu erhalten schlug fehl. :/

ich bitte ergo um hilfe :)

mfg
 
Zuletzt bearbeitet:
Hi.

Also ich versteh immer noch nicht ganz was das soll bzw. was du damit bezwecken willst.

Das was du willst ist doch im Prinzip das:
C++:
fstream datei;

int i = 20000;

datei.write(static_cast<char*>(&i), sizeof(i));
...
datei.read(static_cast<char*>(&i), sizeof(i));
Oder?

Gruß
 
hi :> .. erstmal (wiedermal) vielen dank fuer die schnelle antwort :>

hab ne studientechnische programmieraufgabe wofuer ich ne art dateisystem erstellen soll .. aber eben nur virtuell innerhalb einer datei

theoretisch steht das ganze ding schon, ich versuch es nur eben zu optimieren und da ist zb. der punkt gewesen, dass wenn ich eine zahl abspeichere dies zu erst so geschah, dass die zahl auch zeichenweise (200000 = 6 zeichen, etc.) abgespeichert wurde

das ganz hat ne mehr oder weniger funtionelle oberflaeche (made with qt)

da wir auch die restriktionen eines dateisystems abbilden sollen (blockweise lesen .. quasi in 512byte schritten) fand ich es sinnvollsten, mittels eines QByteArray als ne art buffer die sachen zu schreiben und auch zu lesen

soviel zum problem :>

was ich moechte ist nun, ne zahl wird mittels

C++:
QByteArray.replace(int, sizeof(int), (char *)&int)
in dem array gespeichert und in ne datei geschrieben (wie o.g. gespiegelt)

das auslesen speichert wiederrum 512 byte in nem qbytearray

mittels

C++:
qbytearray = qbytearray.mid(int, sizeof(int))
wird dann die gespeicherte zahl ausgeschnitten und nun soll sie .. zb. fuer berechnungszwecke wieder in ein integer gewandelt werden

das casten mittels
C++:
static_cast<int>
hatte ich probiert .. das qbytearray .. im prinzip ein char array .. laesst das allerdings so einfach nicht mit sich machen ..

oder geht das vll gar nicht? .. ich glaub aber, ich seh den wald vor lauter baeumen nicht :D

mfg
 
Zurück