BYTE[] to Int[] Werte casten
-
Hallo Leute,
ich habe eine komplette Datei in einem BYTE Array buffer eingelesen, hier der Quellcode:
CString Pfad =""; CFile Datei; BYTE* buffer; CFileDialog file_dlg(TRUE, "ekg", "*.*"); if (file_dlg.DoModal()== IDOK ) { Pfad = file_dlg.GetPathName(); Datei.Open(Pfad,CFile::modeRead); DWORD dwFileLen = Datei.GetLength(); buffer = new BYTE [dwFileLen]; Datei.Read(buffer,Datei.GetLength()); } delete [] buffer;in der Variable buffer leigt nun die komplette Datei. Ich will aber daraus ein int Array erzeugen. Int deshalb weil mich der int wert jedes Bytes der Datei interressiert (0 bis 255). Ich kann einen Wert mit: int x = int(buffer[0]); umwandeln das funzt aber ich will ja alle Werte umwandeln. Habe es in einer Schleife versucht aber habe das Problem dass ich die Größe des int array nicht zur Laufzeit festlegen kann. Wie mache ich das sowas wie:
int x[GrößevonBuffer]; ???Oder gibt es eine bessere Methode aus einem Byte Array ein int Array zu machen?
Danke im Vorraus.
-
Schau dir mal die Klasse CArray und die diversen Ableger davon an.

-
Hmm das hilft mir glaube ich auch nicht weiter. Oder wie meinst du das? Ich brauche keine Objekt vom Typ CArray sondern ein int[] werte; Array. Oder geht das damit auch? Stehe mal wieder auf dem Schlauch.
-
Ein byte ist ja von 0-255. Wozu brauchst du da ein int-array?
-
Ist ein BYTE nicht ein unsigned char? Oder verstehe ich da was falsch. Also repräsentiert das doch einen Buchstaben oder? Will später die einzelen int Werte in einem Diagram darstellen mit lineTo. Kann ich da mit den Werten Arbeiten?
-
bubel2004 schrieb:
Ist ein BYTE nicht ein unsigned char? Oder verstehe ich da was falsch. Also repräsentiert das doch einen Buchstaben oder? Will später die einzelen int Werte in einem Diagram darstellen mit lineTo. Kann ich da mit den Werten Arbeiten?
Sicher. Auch ein unsigned char ist ein Zahl (von 0-255). Wenn du die mit zB cout<<x; ausgibst, gibt er das Zeichen aus, das den ASCII-Code hat, der in x steht. (schwieriger satz)
zum beispiel:
char x = 32; cout<<x<<endl;Im ASCII-Zeichensatz ist 32 ein Leerzeichen. Also wird ein Leerzeichen ausgegeben.
-
Ein BYTE ist eine Zahl. CHAR wäre ein Zeichen - läßt sich aber problemlos umwandeln.
-
Also kann ich damit auch ganz normale Rechenoperationen ausführen??
-
Jaaaaaaaaaa!

Klick ma oben auf MSDN und lass dir mal anzeigen, was ein BYTE ist.
Ist einfach nur ein 8-bit Speicherplatz. C unterscheidet doch sowieso nicht so stark zwischen Zahl und Buchstabe.