2010-12-13 15 views
0

Ich möchte mit LZO ein Array von Int oder Byte komprimieren. Also muss ich das int-Array in ein * char kopieren, dann werde ich komprimieren und in Datei speichern. Und nachdem ich den umgekehrten Betrieb machen muss. Ich öffne die Datei, lese sie mit * Char und dekomprimiere zum Array von int.Array von Int und * Char - C++

Ich möchte nicht in das * char, um jedes int zu konvertieren. Ist das eine Möglichkeit, dies schnell zu tun?

char *entrada; 
int *arrayInt2; 
int arrayInt1[100]; 
int ctr; 

for(ctr=0;ctr<=100; ctr++) 
{ 
    arrayInt1[ctr] = ctr; 
} 

entrada = reinterpret_cast<char *>(arrayInt1); 
arrayInt2 = reinterpret_cast<int *>(entrada); 

return 0; 

Ich möchte so etwas. Ist das richtig? Dank

+1

Was ist ein '* char'? Meinst du 'char *'? Überlegen Sie, ob Sie mit einem [guten einführenden C++ - Buch] beginnen (http://stackoverflow.com/questions/388242/the-definitive-c++book-guide-and-list). –

Antwort

1

Sie die Integer-Array behandeln kann direkt als (binäre) Zeichenpuffer und übergeben es an Ihre Komprimierungsfunktion:

char *buffer = reinterpret_cast<char *>(my_int_array); 

Und ähnlich, wenn Sie in einen Zeichenpuffer dekomprimieren, können Sie es als ein integer-Array:

int *array = reinterpret_cast<int *>(my_char_buffer); 

Achten Sie darauf, dass Sie den Überblick über die ursprüngliche Länge des integer-Array halten und dass Sie greifen nicht ungültigen Indizes.

+0

DANKE VIEL !! Es klappt! –