<?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[Binärdatei im Zweierkomplement einlesen(Vorzeichen-Problem)]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hoffe mal, ihr könnt mir helfen. Ich muss für meine Studienarbeit eine WAV-Datei einlesen, um diese dann weiter verarbeiten zu können. Im Moment scheiter ich allerdings noch an den Format in dem die Samples in der Datei stehn. Bis jetzt hab ich folgendes versucht:</p>
<pre><code>void datenlesen(long start,long samples,const char *datei,long *data, long aufloesung){

std::ifstream dat; //Stream Definieren
dat.open(datei, std::ios::in|std::ios::binary); //Datei öffnen
if (!dat) { //existiert die Datei?
        std::cout &lt;&lt; &quot;Fehler beim Öffnen der Datei!&quot; &lt;&lt;std::endl;
        exit(2);
        }

dat.seekg(start,std::ios::beg);
    int i;
    for (i=0;i&lt;samples;i++){   // Genügend Daten für die FFT einlesen
    data[i]=0;
    dat.read(reinterpret_cast&lt;char*&gt;(&amp;data[i]),aufloesung);
    }
dat.close();
return;
}
</code></pre>
<p>Prinzipiell liest er die Werte schon ein, allerdings interpretiert er jedes Sample als positiven Wert. Soweit ich das bis jetzt recherchieren konnte, stehen die Werte als 24-Bit-Zweierkomplement(Little Endian-codiert) im Wav-file. Gibts es eine Standardmöglichkeit, solche Werte richtig auszulesen, oder muss ich die nachträglich noch umwandeln(Kann ich grad nicht glauben)?<br />
Danke für eure Mühe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220698/binärdatei-im-zweierkomplement-einlesen-vorzeichen-problem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 22:13:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220698.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Aug 2008 20:46:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binärdatei im Zweierkomplement einlesen(Vorzeichen-Problem) on Tue, 19 Aug 2008 21:41:19 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hoffe mal, ihr könnt mir helfen. Ich muss für meine Studienarbeit eine WAV-Datei einlesen, um diese dann weiter verarbeiten zu können. Im Moment scheiter ich allerdings noch an den Format in dem die Samples in der Datei stehn. Bis jetzt hab ich folgendes versucht:</p>
<pre><code>void datenlesen(long start,long samples,const char *datei,long *data, long aufloesung){

std::ifstream dat; //Stream Definieren
dat.open(datei, std::ios::in|std::ios::binary); //Datei öffnen
if (!dat) { //existiert die Datei?
        std::cout &lt;&lt; &quot;Fehler beim Öffnen der Datei!&quot; &lt;&lt;std::endl;
        exit(2);
        }

dat.seekg(start,std::ios::beg);
    int i;
    for (i=0;i&lt;samples;i++){   // Genügend Daten für die FFT einlesen
    data[i]=0;
    dat.read(reinterpret_cast&lt;char*&gt;(&amp;data[i]),aufloesung);
    }
dat.close();
return;
}
</code></pre>
<p>Prinzipiell liest er die Werte schon ein, allerdings interpretiert er jedes Sample als positiven Wert. Soweit ich das bis jetzt recherchieren konnte, stehen die Werte als 24-Bit-Zweierkomplement(Little Endian-codiert) im Wav-file. Gibts es eine Standardmöglichkeit, solche Werte richtig auszulesen, oder muss ich die nachträglich noch umwandeln(Kann ich grad nicht glauben)?<br />
Danke für eure Mühe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567869</guid><dc:creator><![CDATA[Fledi]]></dc:creator><pubDate>Tue, 19 Aug 2008 21:41:19 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdatei im Zweierkomplement einlesen(Vorzeichen-Problem) on Tue, 19 Aug 2008 23:33:45 GMT]]></title><description><![CDATA[<p><code>data</code> ist ein Zeiger auf ein Array von mindestens <code>sample</code> longs!?<br />
Und <code>aufloesung</code> ist was? 3? Und ein long ist wie groß? Im Rest stehen dann Nullen und das wird in little-endian wie interpretiert? :p</p>
<p>Und die Konvertierungen der Endianess müsstest du selbst machen... aber das ist recht einfach, da dein System wohl auch Little-Endian ist <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="😃"
    /><br />
(Aber auch sonst wäre das bytes-tauschen nicht so wild.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567903</guid><dc:creator><![CDATA[lagalopex]]></dc:creator><pubDate>Tue, 19 Aug 2008 23:33:45 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdatei im Zweierkomplement einlesen(Vorzeichen-Problem) on Tue, 19 Aug 2008 23:44:02 GMT]]></title><description><![CDATA[<p>Öhmm...ja, genau...da hätte man auch selbst mal drauf kommen können. Naja, die alte Sache mit dem Wald und den Bäumen. Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567905</guid><dc:creator><![CDATA[Fledi]]></dc:creator><pubDate>Tue, 19 Aug 2008 23:44:02 GMT</pubDate></item></channel></rss>