ID3 v2 lesen .. wie gehts?
-
einlesen
ifstream ifs(path,ios_base::binary); //,ios_base::binary if (! ifs) { return -2; } char tag[10]; for(int i=0; i < 10; i++) { ifs >> tag[i]; } if((tag[0]=='I') && (tag[1]=='D') && (tag[2]=='3')) { cout << "ID3v2 tag"<< endl; ID3v2_Header Data; ...und dann etwas weiter unten size
data.size ist ein unsigned longData.size = tag[6] | tag[7]<<7 | tag[8]<<14 | tag[9]<<21;
-
Sieht soweit richtig aus... Hab keine Lust zu rechnen: Lass dir mal die einzelnen Bytes ausgeben und schau mit nem Hexeditor in der mp3-Datei nach, ob das übereinstimmt.
Hab bei mir mal geguckt. Hat gestimmt, kam 741 raus.
-
Also wenn ich die bytes einzeln ausgebe stimmen sie mit den werten des Hex editors überein... sind Dezimal 0 | 0 | 17 | 49 | sowohl im editor als auch wenn ich sie ausgebe,
Allerdings stimmt es "zusammengefasst"(in einen int bzw. unsigned int gemacht) halt nicht. Werden die Miteinander multipliziert... oder wie ergibt sich die Size?
-
Data.size = tag[6]<<21 | tag[7]<<14 | tag[8]<<7 | tag[9];?
-
ah so rum kommt "nur" noch 2225 Raus
immernoch etwas hoch oder?
-
Ich glaube 2 KB sind wenig genug für die Infos. Weiß ja nicht, wie die gespeichert sind und vielleicht sind die Lyrics mit drin?
-
in wirklichkeit sinds etwa 50 (ohne header) danach kommen nullen
Edit .. aber du hast recht nullen (so viele da die 2225 Byte gefüllt sind)