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.


Anmelden zum Antworten