MP3 Header einlesen
-
Moin,
Ich will einen MP3-Header auslesen, den Aufbau habe ich mir oft durchgelesen, aber irgendwie wird das nix...
Wie lese ich denn z.B. 4 Bytes (32 Bits)?
Ich habe mal geguckt, wie groß ein int ist, der ist auch 4 Byte, also dachte ich mir, lese ich es mal per header = getc(Datei); ein, denn getc gibt ja einen int zurück (also wird es jawohl auch 4 Bytes einlesen oder?).Ansatz schon falsch?Oder isses soweit richtig?
Jetzt überprüfe ich, ob Bits(31 - 21) gesetzt sind, denn das müssen sie laut einigen Dokus, die ich gelesen habe...
das mache ich wie folgt (Ok, ich überprüfe nur ein Bit):
#define IS_BIT(val, bit) ((val) & (1 << bit)) ... //bis jetzt noch kein Zeichen eingelesen... header = getc(Datei);//Datei wurde erfolgreich geöffnet und header ist vom Typ int if(IS_BIT(header, 31)) MessageBox(NULL, "31.Bit ist gesetzt!", "gesetzt", NULL); ...
Aber ich bekomme keine MessageBox...
Woran liegt das?Es gab mal einen Thread ums gleiche Thema, ich finde ihn aber nicht mehr...
thx
-
Paul W schrieb:
ich mir, lese ich es mal per header = getc(Datei); ein, denn getc gibt ja einen int zurück (also wird es jawohl auch 4 Bytes einlesen oder?).
Ansatz schon falsch?Ja, getc liefert zwar einen int allerdings sollte der zurückgelieferte Wert im Bereich von unsigned char liegen oder dem Makro EOF wertemäßig entsprechen. Für 4 Byte brauchst Du also 4 getc-Aufrufe.
(Sieht übrigens nach C aus.)
-
hmm...stimmt, das ist C, aber ich hab das Ansi C in der Übersicht übersehen...sorry...ok, dann probier ich es mal mit vier mal...
thx
-
So, beim ersten Aufruf von Getc bekomme ich den Wert 73, müsste aber 255 sein...
gibts es keine Alternative zu getc?thx
-
Paul W schrieb:
So, beim ersten Aufruf von Getc bekomme ich den Wert 73, müsste aber 255 sein...
Du hast jetzt festgestellt, dass die Bits 0-7 nicht alle gesetzt waren. Das ist recht unwichtig, wenn man sich für die Bits 21-23 interessiert, oder verstehe ich dich falsch?
gibts es keine Alternative zu getc?
Doch, schon.