<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ID3 v2 lesen .. wie gehts?]]></title><description><![CDATA[<p>Also ich habe heute den ganzen Tag versucht mich in ID3 einzuarbeiten bzw. mit c++ die infos auszulesen...</p>
<p>bei v1 hat das auch noch super geklapp,<br />
da das ganze eine feste structur hat und hier sehr gut erläutert ist <a href="http://de.wikipedia.org/wiki/ID3-Tag#ID3v1" rel="nofollow">http://de.wikipedia.org/wiki/ID3-Tag#ID3v1</a>..</p>
<p>bei v2 bin ich dann hängen geblieben... ich bin auf die <a href="http://www.id3.org" rel="nofollow">www.id3.org</a> gestoßen, allerdings rafe ich das nicht so ganz.</p>
<p>Kann mir nochmal jemand tipps geben, (in deutsch bitte) wie die id3v2 aufgebaut sind?</p>
<p>Danke schön <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/161068/id3-v2-lesen-wie-gehts</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 21:41:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161068.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 Oct 2006 20:32:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Mon, 02 Oct 2006 20:32:23 GMT]]></title><description><![CDATA[<p>Also ich habe heute den ganzen Tag versucht mich in ID3 einzuarbeiten bzw. mit c++ die infos auszulesen...</p>
<p>bei v1 hat das auch noch super geklapp,<br />
da das ganze eine feste structur hat und hier sehr gut erläutert ist <a href="http://de.wikipedia.org/wiki/ID3-Tag#ID3v1" rel="nofollow">http://de.wikipedia.org/wiki/ID3-Tag#ID3v1</a>..</p>
<p>bei v2 bin ich dann hängen geblieben... ich bin auf die <a href="http://www.id3.org" rel="nofollow">www.id3.org</a> gestoßen, allerdings rafe ich das nicht so ganz.</p>
<p>Kann mir nochmal jemand tipps geben, (in deutsch bitte) wie die id3v2 aufgebaut sind?</p>
<p>Danke schön <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148374</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Mon, 02 Oct 2006 20:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Mon, 02 Oct 2006 20:53:28 GMT]]></title><description><![CDATA[<p>Auf <a href="http://id3.org" rel="nofollow">id3.org</a> ist eigentlich alles ganz gut erklärt. Ich glaube in <a href="http://www.id3.org/id3v2-00.txt" rel="nofollow">diesem</a> Textfile ist alles erklärt, was du brauchst. Gut, es ist auf Englisch und viiiiiieeeeeel Text, aber wirst du schaffen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Ach, und <a href="http://www.id3.org/mp3frame.html" rel="nofollow">dies hier</a> für den Anfangs-aufbau von mp3s wirst du auch brauchen...</p>
<p>Viel Spaß <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148385</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 02 Oct 2006 20:53:28 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Mon, 02 Oct 2006 21:38:55 GMT]]></title><description><![CDATA[<p>in was lese ich den die bits und bytes am besten ein ... bei Id3v1 war das einlesen bzw. einweisen ins char format passend...</p>
<p>ID3 hab ich schon mal erfolgreich ausgelesen (3 chars) dannach 2 ints (41 kommt zwar net ganz hin aber okay)... doch danach wirds dann naja ... weiß auch net <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>okay ich glaube ich komme so langsamm dahinter</p>
<p>naja das mit den bytetypen könnt ihr mir tortzdem nochmal sagen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148392</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Mon, 02 Oct 2006 21:38:55 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Tue, 03 Oct 2006 07:47:44 GMT]]></title><description><![CDATA[<p><a href="http://developer.kde.org/~wheeler/taglib.html" rel="nofollow">Hier</a> kannst du auch Source-Code für das ID3-Tag einlesen runterladen. Hab mal geguckt, musste dich wohl ein bisschen einarbeiten...</p>
<p>Hab <a href="http://sites.inka.de/sites/plagiats-home/mp3-header.html#syncword" rel="nofollow">hier</a> eine gute Anleitung über den Aufbau von mp3-Headern gefunden.</p>
<p>Aber was du für den Anfang erstmal brauchst, ist glaube ich so etwas wie eine CBitSet-Klasse, die dir hilft, die einzelnen Bits auszulesen.</p>
<p>Ansonsten: Kennst du sowas?:</p>
<pre><code class="language-cpp">struct Mp3Header
{
    unsigned long SyncWord : 12;
    unsigned long MpegVersion : 1;
    unsigned long MpegLayer : 2;
    unsigned long ProtectionBit : 1;
    unsigned long BitRate : 4;
};
</code></pre>
<p>Die Zahlen hinter dem Variablen-Namen geben die Bitzahl an, die die Variable einnimmt. <a href="http://msdn2.microsoft.com/en-us/library/64973255.aspx" rel="nofollow">Hier</a> ein bisschen von Microsoft erklärt.</p>
<p>Wie ich das sehe, ist der Mp3-Header 32 Byte lang. Ich glaub, du brauchst echt so eine BitSet-Klasse. Hatte mal eine gemacht, ist aber weg...<br />
Kleiner Ansatz:</p>
<pre><code class="language-cpp">class CBitSet
{
    public:
		CBitSet()
		{
			m_iSize = 0;
			m_iCurBit = 0;
			m_pData = NULL;
		}

		CBitSet( CHAR* pData, ULONG Size )
		{
			m_iSize = Size;
            m_iCurBit = 0;
            m_pData = new char [m_iSize];
            CopyMemory( m_pData, pData, m_iSize );
		}

		~CBitSet()
		{
			Reset();
		}

        void Reset()
        {
            delete [] m_pData;
			m_pData = NULL;
            m_iSize = 0;
            m_iCurBit = 0;
        }

        void Set( CHAR* pData, ULONG Size )
        {
            Reset();
            m_iSize = Size;
            m_iCurBit = 0;
            m_pData = new char [m_iSize];
            CopyMemory( m_pData, pData, m_iSize );
        }

        BOOL Seek( ULONG BitNr )
        {
            if ( BitNr &gt;= m_iSize*8 )
                return FALSE;
            m_iCurBit = BitNr;
            return TRUE;
        }

        ULONG GetBits( ULONG BitCount )
        {
            ...
        }

		ULONG Skip( ULONG BitCount )
		{
			m_iCurBit += BitCount;
			if ( m_iCurBit &gt;= m_iSize*8 )
				m_iCurBit = m_iSize*8;
			return m_iCurBit;
		}

    protected:
        ULONG m_iSize;
        ULONG* m_pData;
        ULONG m_iCurBit;
};

...

ULONG SnycWord = BitSet.GetBits( 4 );
ULONG MpegVersion = BitSet.GetBits( 1 );
ULONG MpegLayer = BitSet.GetBits( 2 );
...
</code></pre>
<p>Zu mehr bin ich grad nicht in der Lage, es ist schließlich erst *gähn* kurz nach neun.<br />
Wenn du nicht weiterkommst, sag nochmaluzzzzzzzzzzzzzzzzzdddddddddddddddddddd Bescheid (ups, meine Katze ist übers 'z' und 'd' gelaufen... 8 Wochen alt, seit gestern Abend meine... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> )</p>
<p>Edit: Auf Codeproject gibts guten Source! <a href="http://codeproject.com/audio/mp3fileinfo.asp" rel="nofollow">http://codeproject.com/audio/mp3fileinfo.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148459</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 03 Oct 2006 07:47:44 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Tue, 03 Oct 2006 14:12:46 GMT]]></title><description><![CDATA[<p>Ich raf nur Bahnhof... *warum kann man ID3v2 nicht mal einfach für die progger machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":-P"
      alt="😛"
    /> bei ID3v1 gings doch auch* wie ist das jetzt mit dem bit</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148692</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Tue, 03 Oct 2006 14:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Tue, 03 Oct 2006 16:51:09 GMT]]></title><description><![CDATA[<p>download123 schrieb:</p>
<blockquote>
<p>*warum kann man ID3v2 nicht mal einfach für die progger machen :-P*</p>
</blockquote>
<p>hehe^^ find ich auch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Aber die Mp3-Datei soll halt möglichst klein und flexibel sein.</p>
<p>download123 schrieb:</p>
<blockquote>
<p>wie ist das jetzt mit dem bit</p>
</blockquote>
<p>Naja... Den Post über dir hast du schon gesehen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148775</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 03 Oct 2006 16:51:09 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Tue, 03 Oct 2006 17:53:33 GMT]]></title><description><![CDATA[<p>sehen verstehen und umsätzen ... 3. dinge</p>
<p>ID3v2 wäre mal ne anregung für ein tutorial... (wie mache ichs richtig am besten noch mit beispiel code)</p>
<p>Mal sehen ob ichs halbwegs verstanden habe...<br />
die zahlen hinter dem struct geben die größe davon in bit an ... der rest wird mit nullen gefüllt richtig?..</p>
<p>nochmal edit....</p>
<p>wie lese ich das ganze in mein struct ein<br />
bzw. wie kriege ich das da rein...<br />
ach ist das ein müll</p>
<p><em>jetzt muss ich nur noch die doofe doku raffen... und das wie ichs gescheit<br />
einlese... und dann hab ichs (was ne hoffnung :-P)</em></p>
<p>edit x tausend..</p>
<p>langsam komm ich dahinter :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148784</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Tue, 03 Oct 2006 17:53:33 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Tue, 03 Oct 2006 17:50:57 GMT]]></title><description><![CDATA[<p>Nanana! Eigentlich ist das gar nicht so schwer! Ein Tutorial werd ich dir zwar nicht schreiben, aber ich versuchs dir nochmal ein wenig zu erklären:</p>
<p>Du weißt ja bestimmt, dass im Arbeitsspeicher gaaaaanz viele 0en und 1en aneinanderliegen. Eine 0 bzw. eine 1 ist dabei ein Bit. 8 Bit fasst man zu einem <em>Char</em> zusammen, 16 Bit zu einem <em>Word</em> und 32 Bit zu einem <em>Long</em>.</p>
<p>Angenommen, du deklarierst eine 8-Bit-Variable und setzt sie auf 0, etwa so:</p>
<pre><code>char a;
a = 0;
</code></pre>
<p>Dann sehen diese 8 Bit im Arbeitsspeicher (dick markiert) so aus:<br />
...010101101010010<strong>00000000</strong>10101000100110101...<br />
Setzt du sie auf 67, sehen sie so aus (nur der Ausschnitt mit den 8 Bit):<br />
01000011<br />
Das bekommst du raus, indem du den Windows-Rechner startest, im Modus <em>Dez</em> die Zahl 67 eingibst und in den Modus <em>Bin</em>schaltest.</p>
<p>So.<br />
Wie irgendwo schon gesagt, besteht der Mp3-Header aus 32 Bit. und könnte z.B. so aussehen:<br />
11101010101010101101010010110010<br />
Praktischerweise passen diese Bits alle genau in eine Variable vom Typ <em>Long</em>.<br />
Also liest du als erstes aus der Datei die 32 Bit, die als Header fungieren, in eine Long-Variable ein.</p>
<p>Btw: Hast du schon mal was vom Shiften gehört? Und vom &amp;-Operator?<br />
Wenn nicht:<br />
Wenn du die Bits oben um 3 nach rechts shiftest, sehen sie so aus: 00011101010101010101101010010110.<br />
Wenn du den 8-Bit-Wert 01101010 mit 00001111 &amp;-operierst, kommt 00001010 raus.</p>
<p>Also, du liest den Header ein, und willst die Mpeg-Version haben (Bit 12).<br />
Also nimmst du deinen Long-Wert (=Header), shiftest ihn 12 nach rechts und operierst ihn mit &amp; 1.</p>
<pre><code class="language-cpp">long Header;
long MpegVersion = (Header&gt;&gt;12)&amp;1.
</code></pre>
<p>So, keine Lust mehr... Verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148804</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 03 Oct 2006 17:50:57 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Tue, 03 Oct 2006 18:17:36 GMT]]></title><description><![CDATA[<p>Also soweit verstanden... aber</p>
<p>der IDEv2 Header besteht aus 80 bit (10 byte :-P) klugscheiß...</p>
<p>ich habe schon ne menge rausbekommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":-P"
      alt="😛"
    /> ich kann schon bist unsynchronisation auslesen...<br />
bisher habe ich erstmal den gesamten header... (alle 10 byte) in einen string eingelesen...</p>
<p>dann die ersten 3 char auf &quot;IDE&quot; überprüft .. danach weggeschmissen...<br />
die nächsten zwei in ints getan, (versionsnummer 4.0) passt... den nächsten char besorg ich mir die ersten zwei bit (mit (c &amp; 0x01) ) etc. (um zu checken ob unsynchronisation)...</p>
<p>jetzt ist die frage ob ich die size in ints packen kann</p>
<p>in der doku heißt es</p>
<p>ID3 size 4 * %0xxxxxxx</p>
<p>das heißt 4 byte size...</p>
<p>nur sind das int? bzw. kann ich den inhalt &quot;%0xxxxxxx&quot; einfach in einen int reinschmeißen?(ich kanns halt leider nicht überprüfen)</p>
<p>habs einfach mal ausprobiert...</p>
<p>0 0 17 49 also so vom gefühl her könntes meiner Meinung nach hinkommen</p>
<p>aber klärt mich auf...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148816</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Tue, 03 Oct 2006 18:17:36 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Tue, 03 Oct 2006 19:10:55 GMT]]></title><description><![CDATA[<p>also das mit der size raf ich nicht...</p>
<p>mit der 1 seite des gesamttags,</p>
<p>und mit der framesize<br />
zitate<br />
&quot;and<br />
one three byte size field&quot;... schmeiße ich das auch in einfach in 3 ints</p>
<p>... kann mir jemand helfen ... wie mache ich das mti den sizen</p>
<p>... naja okay ... die size des gesamt headers könnte ich (4 x 8 bit = 32 ) in einen unsignet long packen</p>
<p>aber wie mach ich das momentan ist es in 4 chars wie pack ich die in einen long... und was mache ich mit den 3 byte size angabe einer frame?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148862</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Tue, 03 Oct 2006 19:10:55 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Wed, 04 Oct 2006 18:51:44 GMT]]></title><description><![CDATA[<p>sorry das ich nochmal poste...</p>
<p>Aber ich habe jetzt wirklich ein problem was ich nicht hinbekomme</p>
<p>die size<br />
ich habe 4 byte ... in 4 char eingelesen...<br />
jetzt muss ich die info irgendwie zur verarbeitung in eine zahl (einen int) verwandeln</p>
<p>problem 1. die bytes fangen jeweils mit null an (die null scheint nicht zur info zu gehören) [ 4 * %0xxxxxxx]<br />
wie berücksichtige ich das bzw. generell wie packe ich 4 char in ein int?</p>
<p>und das ganze nochmal mit den frame hedern [ one three byte size field] da sinds 3 byte... wie packe ich das in einen header...</p>
<p>Danke wenn mir jemand helfen kann *ich verzweifle* <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149452</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Wed, 04 Oct 2006 18:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Thu, 05 Oct 2006 23:10:26 GMT]]></title><description><![CDATA[<p>4 Char -&gt; 1 Int</p>
<pre><code class="language-cpp">char Bytes[4];
int Big;

//Entweder...
CopyMemory( &amp;Big, Bytes, 4 );

// oder...
Big = *((int*)Bytes);

// oder...
Big = Big[3]&lt;&lt;24 | Big[2]&lt;&lt;16 | Big[1]&lt;&lt;8 | Big[0];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1150263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150263</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 05 Oct 2006 23:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Fri, 06 Oct 2006 17:30:18 GMT]]></title><description><![CDATA[<p>kommen 4401 Byte für einen ID3v2 header hin (kommt mir etwas viel vor)</p>
<p>und wie mach ich das mit nur 3 byte size bereich?..</p>
<p>ich bin mir da noch net so ganz sicher ob das für id3 so geht.. (gerade auch wegen den vorgegeben 0 en an jedem byteanfang im 4byte header</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150752</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Fri, 06 Oct 2006 17:30:18 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Fri, 06 Oct 2006 23:26:18 GMT]]></title><description><![CDATA[<p>poste doch mal bitte deine Quelle für den Header</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150881</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 06 Oct 2006 23:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 09:42:40 GMT]]></title><description><![CDATA[<p>also von der seite:<br />
<a href="http://www.id3.org/id3v2-00.txt" rel="nofollow">http://www.id3.org/id3v2-00.txt</a></p>
<p>Hier die Ausschnitte</p>
<blockquote>
<p>The ID3v2 tag header, which should be the first information in the<br />
file, is 10 bytes as follows:</p>
<p>ID3/file identifier &quot;ID3&quot;<br />
ID3 version $02 00<br />
ID3 flags %xx000000<br />
ID3 size 4 * %0xxxxxxx</p>
</blockquote>
<blockquote>
<p>The headers of the frames are similar in their construction. They<br />
consist of one three character identifier (capital A-Z and 0-9) and<br />
one three byte size field, making a total of six bytes.</p>
</blockquote>
<p>*ich hoffe das wars was du meinstes</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150919</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 07 Oct 2006 09:42:40 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 11:54:38 GMT]]></title><description><![CDATA[<p>War genau das was ich meinte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Gut, jetzt wüsste ich gerne, wie weit du mit dem Einlesen gekommen bist. Soweit ich das verstanden hab, kannst du schon das &quot;ID3&quot; einlesen, die ID3-Version und die ID3-Flags.</p>
<blockquote>
<p>The ID3v2 tag header, which should be the first information in the<br />
file, is 10 bytes as follows:</p>
<p>ID3/file identifier &quot;ID3&quot;<br />
ID3 version $02 00<br />
ID3 flags %xx000000<br />
ID3 size 4 * %0xxxxxxx</p>
</blockquote>
<p>Zum Einlesen würde ich eine Struktur festlegen, und da reinlesen.</p>
<pre><code class="language-cpp">#pragma strict

struct ID3V2HEADER
{
    char ID[3];
    char MajorVersion;
    char MinorVersion;
    char Flags;
    char Size[4];
};

ID3V2HEADER Header;
ReadFile( hFile, &amp;Header, 10, &amp;Dummy, NULL );
</code></pre>
<p>Die Berechnung der Size ist nicht so einfach. Das oberste Bit jedes Bytes ist 0 und wird <strong>ignoriert</strong>.<br />
Ich würds so machen (keine Garantie auf Richtigkeit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> ):</p>
<pre><code class="language-cpp">ULONG RealTagSize = Header.Size[0] | Header.Size[1]&lt;&lt;7 | Header.Size[2]&lt;&lt;14 | Header.Size[3]&lt;&lt;21;
</code></pre>
<p>Dann haste immerhin schonmal den Header. Wo kommst du jetzt nicht weiter?</p>
<p><strong>Und bitte benutze für deine Fragen deutliche, eindeutige deutsche Sätze!</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150977</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 07 Oct 2006 11:54:38 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 12:12:47 GMT]]></title><description><![CDATA[<p>Also, ich beschreibe mal kurz wie ichs umgesetzt habe:<br />
ich habe erstmal ein struct angelegt, wo alle daten drin sind:</p>
<pre><code>struct ID3v2_Header
{
    int version[2];
    bool unsynchronisation;
    bool compression;
    int size;
};
</code></pre>
<p>in der Funktion lese ich die ersten 10 byte aus und schreibe sie in einen String</p>
<pre><code>//ifs ist ein ifstream mit geöffnerter Datei
string tag;
    for(int i=1; i &lt;= 10; i++)
    {
        char abl;
        ifs &gt;&gt; abl;
        tag+=abl;
    }
</code></pre>
<p>danach werte ich die chars nach und nach aus und &quot;fülle&quot; das Struct, und lösche die char's aus dem string.<br />
Das klappt bis zur Size. Die bekomme ich irgendwie nicht so ganz.</p>
<p>ich habe jetzt versucht es nach deinem Code in Nummern zu packen.</p>
<pre><code>ULONG RealTagSize = Header.Size[0] | Header.Size[1]&lt;&lt;7 | Header.Size[2]&lt;&lt;14 | Header.Size[3]&lt;&lt;21;
</code></pre>
<p>Was ist ein ULONG? ein unsigned long? bei mir erkennt der Compiler das nicht.</p>
<p>Sieht in meinem Code so aus</p>
<pre><code>Data.size = tag[1] | tag[2]&lt;&lt;7 | tag[3]&lt;&lt;14 | tag[4]&lt;&lt;21;
</code></pre>
<p>Data ist ein object des oberen ID3v2_Header structs.</p>
<p>Allerdings bekomme ich dann einen Wert a la 103038976 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150983</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 07 Oct 2006 12:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 13:10:33 GMT]]></title><description><![CDATA[<p>Ich würde das auf keinen Fall mit einem String machen!<br />
Erstens <em>passt</em> es einfach nicht, weil ein String eine Zeichenkette beinhalten soll und nicht einzelne Daten-Bytes.<br />
Zweitens sind Strings null-terminiert, d.h. der String hört da auf, wo das erste Byte mit dem Wert 0 ist.</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>struct ID3V2HEADER<br />
{<br />
char ID[3];<br />
char MajorVersion;<br />
char MinorVersion;<br />
char Flags;<br />
char Size[4];<br />
};</p>
</blockquote>
<p>Warum liest du nicht einfach die ersten 10 Bytes in diese Struktur ein? Dann kannst du sofort die einzelnen Member-Variablen ansprechen und weißt, welches Byte welche Bedeutung hat.</p>
<p>Ja, ULONG steht für <em>unsigned long</em>. Halt einfach eine 32-Bit-Variable für die positiven Zahlenwerte. Was kommt denn dabei raus, wenn du das mit meiner Methode machst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151009</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 07 Oct 2006 13:10:33 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 13:58:05 GMT]]></title><description><![CDATA[<p>Okay.. jetzt lese ich das ganze in ein char array ein..</p>
<p>kommt aber die selbe zahl als size raus,<br />
Ich wills deshalb nicht gleich in ein struct reinlesen, weil ich dann 2 structs bräuchte was es nicht übersichtlicher macht.</p>
<p>aber letztlich machts auch keinen unterschied ob mans in 10 char oder in ein struct das aus 10 char besteht oder?</p>
<p>Also es besteht leider weiterhin das problem, das die Zahl für die Size zu groß ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> es ist immernoch 103038976<br />
bzw. ist das zu viel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151024</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 07 Oct 2006 13:58:05 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 14:52:47 GMT]]></title><description><![CDATA[<p>Byte-Array ist super <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Kannst du mal die Hauptteile deines Codes posten? Einlesen, und size-Berechnung?</p>
<p>Edit: Btw: Ist definitiv zu viel!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151049</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 07 Oct 2006 14:52:47 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 15:11:23 GMT]]></title><description><![CDATA[<p>einlesen</p>
<pre><code class="language-cpp">ifstream ifs(path,ios_base::binary); //,ios_base::binary
    if (! ifs)
    {
        return -2;
    }

char tag[10];
    for(int i=0; i &lt; 10; i++)
    {
        ifs &gt;&gt; tag[i];
    }
if((tag[0]=='I') &amp;&amp; (tag[1]=='D') &amp;&amp; (tag[2]=='3'))
    {
        cout &lt;&lt; &quot;ID3v2 tag&quot;&lt;&lt; endl;
        ID3v2_Header Data;
...
</code></pre>
<p>und dann etwas weiter unten size<br />
data.size ist ein unsigned long</p>
<pre><code class="language-cpp">Data.size = tag[6] | tag[7]&lt;&lt;7 | tag[8]&lt;&lt;14 | tag[9]&lt;&lt;21;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1151058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151058</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 07 Oct 2006 15:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 15:26:44 GMT]]></title><description><![CDATA[<p>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.<br />
Hab bei mir mal geguckt. Hat gestimmt, kam 741 raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151063</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 07 Oct 2006 15:26:44 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 15:51:52 GMT]]></title><description><![CDATA[<p>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,</p>
<p>Allerdings stimmt es &quot;zusammengefasst&quot;(in einen int bzw. unsigned int gemacht) halt nicht. Werden die Miteinander multipliziert... oder wie ergibt sich die Size?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151071</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 07 Oct 2006 15:51:52 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 16:12:41 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Data.size = tag[6]&lt;&lt;21 | tag[7]&lt;&lt;14 | tag[8]&lt;&lt;7 | tag[9];
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151089</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 07 Oct 2006 16:12:41 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sat, 07 Oct 2006 16:17:23 GMT]]></title><description><![CDATA[<p>ah so rum kommt &quot;nur&quot; noch 2225 Raus</p>
<p>immernoch etwas hoch oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151093</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Sat, 07 Oct 2006 16:17:23 GMT</pubDate></item><item><title><![CDATA[Reply to ID3 v2 lesen .. wie gehts? on Sun, 08 Oct 2006 00:08:53 GMT]]></title><description><![CDATA[<p>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?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151256</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 08 Oct 2006 00:08:53 GMT</pubDate></item></channel></rss>