wunderschoenen guten tag :>
beim versuch einen zahlenwert in einer datei zu speichern ist mir aufgefallen, dass dies ja zeichenweise geschieht und somit zb. die zahl 200000 ganze 6 zeichen wegnimmt, wohingegen man sie mit nur 20bit codieren kann.
ergo hab ich mich daran gesetzt dieses problem zu umschiffen und versucht mittels einer funktion die jeweilige zahl in einen hex-wert und die einzelnen hex-nibbles dann paarweise zu einem char zusammenzufassen um eben fuer die zahl 200000 auch nur (in dem fall 2,5 = 3 byte) zu brauchen
dabei rausgekommen ist folgendes .. so richtig hinhauen, tut es allerdings nicht, weswegen ich um hilfe bitte
sieht jemand den fehler oder hat vll schonmal jmd das problem geloest ?
mfg
beim versuch einen zahlenwert in einer datei zu speichern ist mir aufgefallen, dass dies ja zeichenweise geschieht und somit zb. die zahl 200000 ganze 6 zeichen wegnimmt, wohingegen man sie mit nur 20bit codieren kann.
ergo hab ich mich daran gesetzt dieses problem zu umschiffen und versucht mittels einer funktion die jeweilige zahl in einen hex-wert und die einzelnen hex-nibbles dann paarweise zu einem char zusammenzufassen um eben fuer die zahl 200000 auch nur (in dem fall 2,5 = 3 byte) zu brauchen
dabei rausgekommen ist folgendes .. so richtig hinhauen, tut es allerdings nicht, weswegen ich um hilfe bitte

Code:
...
char *result = new char;
char *tmp= result;
char *_tmp = new char;
int i=0, quotient = 200000;
do {
*_tmp = "0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f"[ abs( quotient % 16 ) ];
if(i%2 == 0 || i == 0) { *tmp = *_tmp; i++; }
else { *tmp ^= (*_tmp << 4); i++; tmp++; }
quotient /= 16;
} while ( quotient );
for(i=0;i<=3;i++) if(!tmp[i]) tmp[i] = 0x00; // auf 4 byte auffuellen
std::reverse( result, tmp);
cout << result << endl;
delete result;
delete tmp;
delete _tmp;
...
sieht jemand den fehler oder hat vll schonmal jmd das problem geloest ?

mfg