<?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ärdaten interpretieren]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe hier eine Datei im Binärformat vorliegen.<br />
Ich möchte diese nun &quot;entschlüsseln&quot; indem ich Bytes interpretiere.<br />
z.B.</p>
<pre><code class="language-cpp">getInt(Datei, Offset, BitAnzahl)  //Öffnet Datei, geht zum Offset und liefert einen integer der Länge ByteAnzahl
getUnsigned(Datei, Offset, BitAnzahl)  //Öffnet Datei, geht zum Offset und liefert einen unsigned integer der Länge BitAnzahl
getDouble(Datei, Offset)  //Öffnet Datei, geht zum Offset und liefert einen Double
getString(Datei, Offset)  //Öffnet Datei, geht zum Offset und liefert einen null Terminierten String.
//Float, wide String, LittleEndian, BigEndian, etc.
</code></pre>
<p>gibt es da schon was fertiges?<br />
Ich möchte nicht alle Funktionen selber implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/306527/binärdaten-interpretieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 18:04:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306527.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 31 Jul 2012 12:51:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 12:51:31 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe hier eine Datei im Binärformat vorliegen.<br />
Ich möchte diese nun &quot;entschlüsseln&quot; indem ich Bytes interpretiere.<br />
z.B.</p>
<pre><code class="language-cpp">getInt(Datei, Offset, BitAnzahl)  //Öffnet Datei, geht zum Offset und liefert einen integer der Länge ByteAnzahl
getUnsigned(Datei, Offset, BitAnzahl)  //Öffnet Datei, geht zum Offset und liefert einen unsigned integer der Länge BitAnzahl
getDouble(Datei, Offset)  //Öffnet Datei, geht zum Offset und liefert einen Double
getString(Datei, Offset)  //Öffnet Datei, geht zum Offset und liefert einen null Terminierten String.
//Float, wide String, LittleEndian, BigEndian, etc.
</code></pre>
<p>gibt es da schon was fertiges?<br />
Ich möchte nicht alle Funktionen selber implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237301</guid><dc:creator><![CDATA[Dudeldu]]></dc:creator><pubDate>Tue, 31 Jul 2012 12:51:31 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 12:54:12 GMT]]></title><description><![CDATA[<p>Dudeldu schrieb:</p>
<blockquote>
<p>gibt es da schon was fertiges?</p>
</blockquote>
<p>Wie wäre es mit einem Hex-Editor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237304</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 31 Jul 2012 12:54:12 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 13:12:18 GMT]]></title><description><![CDATA[<p>Ja, Hexeditor ist gut nur kann ich damit nicht Programmieren. Ich möchte die Daten ja nicht nur lesen sondern auch weiterverarbteiten in c++ Quellcode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237307</guid><dc:creator><![CDATA[Dudeldu]]></dc:creator><pubDate>Tue, 31 Jul 2012 13:12:18 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 13:18:20 GMT]]></title><description><![CDATA[<p>Dudeldu schrieb:</p>
<blockquote>
<p>Ja, Hexeditor ist gut nur kann ich damit nicht Programmieren. Ich möchte die Daten ja nicht nur lesen sondern auch weiterverarbteiten in c++ Quellcode.</p>
</blockquote>
<p>Willst du nicht im Grunde nur Binärdaten in verschiedene Datentypen einlesen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p><a href="http://www.cplusplus.com/reference/iostream/ifstream/" rel="nofollow">http://www.cplusplus.com/reference/iostream/ifstream/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237310</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Tue, 31 Jul 2012 13:18:20 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 13:20:55 GMT]]></title><description><![CDATA[<p>Boost Serialization.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237311</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 31 Jul 2012 13:20:55 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 14:33:57 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Boost Serialization.</p>
</blockquote>
<p><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>Ich wuerde bei der Standardbibliothek einfach folgendes machen (ungetestet):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;utility&gt;
#include &lt;string&gt;
#include &lt;type_traits&gt;

template&lt;typename T&gt; // enable_if erzeugt eine zyklische Abhaengigkeit bei der user-generierten spezialisierung
std::pair&lt;T, bool&gt; get(std::istream&amp; is, std::streamoff offset)
{ // C++11 :arrow_right: static assertion mit std::is_arithmetic
    is.seekg(offset, std::ios_base::beg);
    return std::make_pair( *std::istream_iterator&lt;T&gt;( is ), static_cast&lt;bool&gt;(is) );
}

template&lt;&gt;
std::pair&lt;std::string, bool&gt; get&lt; std::string &gt;(std::istream&amp; is, std::streamoff offset)
{
    is.seekg(offset, std::ios_base::beg);
    std::pair&lt;std::string, bool&gt; rval;
    std::getline(is, rval.first, '\0');
    rval.second = is;
    return rval;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2237328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237328</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 31 Jul 2012 14:33:57 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 14:57:20 GMT]]></title><description><![CDATA[<p>Something like that ...</p>
<pre><code class="language-cpp">std::vector&lt;unsigned char&gt; bytes(1024*1024);
std::ifstream file(&quot;my_binary_file&quot;, std::ios::binary);
file.read(bytes.data(), file_size);
file.close();
</code></pre>
<p>Danach einfach mit <code>bytes</code> arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237333</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 31 Jul 2012 14:57:20 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 15:03:19 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Something like that ...</p>
<pre><code class="language-cpp">std::vector&lt;unsigned char&gt; bytes(1024*1024);
std::ifstream file(&quot;my_binary_file&quot;, std::ios::binary);
file.read(bytes.data(), file_size);
file.close();
</code></pre>
</blockquote>
<p>Das geht doch schoener:</p>
<pre><code class="language-cpp">std::ifstream file(&quot;my_binary_file&quot;, std::ios::binary); 
std::ostringstream stream;
stream &lt;&lt; file.rdbuf();
std::string str = stream.str();
std::vector&lt;unsigned char&gt; bytes( str.begin(), str.end() );
</code></pre>
<p>Angenommen die char -&gt; unsigned char Konvertierung laeuft wie erwartet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237337</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 31 Jul 2012 15:03:19 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 15:36:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::vector&lt;unsigned char&gt; bytes(std::istream_iterator&lt;char&gt;(std::ifstream(&quot;my_binary_file&quot;, std::ios::binary).seekg(0)), std::istream_iterator&lt;char&gt;());
//                                                                                                             ^ pseudo-lvalue-cast
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2237346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237346</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 31 Jul 2012 15:36:29 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 15:26:45 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::vector&lt;unsigned char&gt; bytes(std::istream_iterator&lt;char&gt;(std::ifstream(&quot;my_binary_file&quot;, std::ios::binary).seekg(0)), std::istream_iterator&lt;char&gt;());
</code></pre>
</blockquote>
<p>camper ist ja so ein king...</p>
<p>Aber ich kann das auch (zweizeiler):</p>
<pre><code class="language-cpp">std::string str = dynamic_cast&lt;std::ostringstream*&gt;(&amp;(std::ostringstream() &lt;&lt; std::ifstream(&quot;my_binary_file&quot;, std::ios::binary).rdbuf()))-&gt;str() ;
    std::vector&lt;unsigned char&gt; bytes( str.begin(), str.end() );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2237350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237350</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 31 Jul 2012 15:26:45 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 15:33:26 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::string str = dynamic_cast&lt;std::ostringstream*&gt;(&amp;(std::ostringstream() &lt;&lt; std::ifstream(&quot;my_binary_file&quot;, std::ios::binary).rdbuf()))-&gt;str() ;
    std::vector&lt;unsigned char&gt; bytes( str.begin(), str.end() );
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Und warum muss es vorher unbedingt in einen String, wenn man doch vom Stream direkt in den Vector lesen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237354</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Tue, 31 Jul 2012 15:33:26 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 15:34:51 GMT]]></title><description><![CDATA[<p>ipsec schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::string str = dynamic_cast&lt;std::ostringstream*&gt;(&amp;(std::ostringstream() &lt;&lt; std::ifstream(&quot;my_binary_file&quot;, std::ios::binary).rdbuf()))-&gt;str() ;
    std::vector&lt;unsigned char&gt; bytes( str.begin(), str.end() );
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Und warum muss es vorher unbedingt in einen String, wenn man doch vom Stream direkt in den Vector lesen könnte?</p>
</blockquote>
<p>Wie meinste das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237355</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 31 Jul 2012 15:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 15:44:08 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<p>Und warum muss es vorher unbedingt in einen String, wenn man doch vom Stream direkt in den Vector lesen könnte?</p>
</blockquote>
<p>Wie meinste das?</p>
</blockquote>
<p>So wie ers geschrieben hat. Wozu den std::string str?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237356</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 31 Jul 2012 15:44:08 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 15:47:40 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>ipsec schrieb:</p>
<blockquote>
<p>Und warum muss es vorher unbedingt in einen String, wenn man doch vom Stream direkt in den Vector lesen könnte?</p>
</blockquote>
<p>Wie meinste das?</p>
</blockquote>
<p>So wie ers geschrieben hat. Wozu den std::string str?</p>
</blockquote>
<p>Ich kann doch wohl kaum</p>
<pre><code class="language-cpp">std::vector v( dynamic_cast&lt;std::ostringstream*&gt;(&amp;(std::ostringstream() &lt;&lt; std::ifstream(&quot;my_binary_file&quot;, std::ios::binary).rdbuf()))-&gt;str() );
</code></pre>
<p>Schreiben. Die start-end iteratorenpaar Version funktioniert hier dank prvalue auch nicht. Also wie ohne Puffer?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237360</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 31 Jul 2012 15:47:40 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 15:47:57 GMT]]></title><description><![CDATA[<p>Es gibt wohl einen quote-bug.</p>
<p>Edit: Pumuckl hat falsch gequotet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237361</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 31 Jul 2012 15:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 16:01:31 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Ich kann doch wohl kaum</p>
<pre><code class="language-cpp">std::vector v( dynamic_cast&lt;std::ostringstream*&gt;(&amp;(std::ostringstream() &lt;&lt; std::ifstream(&quot;my_binary_file&quot;, std::ios::binary).rdbuf()))-&gt;str() );
</code></pre>
<p>Schreiben. Die start-end iteratorenpaar Version funktioniert hier dank prvalue auch nicht. Also wie ohne Puffer?</p>
</blockquote>
<p>Mit <code>istream_iterator</code> , wie camper es bereits geschrieben hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2237369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237369</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Tue, 31 Jul 2012 16:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 16:03:36 GMT]]></title><description><![CDATA[<p>ipsec schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Ich kann doch wohl kaum</p>
<pre><code class="language-cpp">std::vector v( dynamic_cast&lt;std::ostringstream*&gt;(&amp;(std::ostringstream() &lt;&lt; std::ifstream(&quot;my_binary_file&quot;, std::ios::binary).rdbuf()))-&gt;str() );
</code></pre>
<p>Schreiben. Die start-end iteratorenpaar Version funktioniert hier dank prvalue auch nicht. Also wie ohne Puffer?</p>
</blockquote>
<p>Mit <code>istream_iterator</code> , wie camper es bereits geschrieben hat.</p>
</blockquote>
<p>-.-</p>
<p>Ich meinte, meine Version. Campers ist die mit Streamiteratoren. Ich meinte meine mit dem Stringstream. Klar, dass die nicht so gut ist wie campers, ich wollte sehen ob ich nen zwei/ein-zeiler hinbekomme <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2237372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237372</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 31 Jul 2012 16:03:36 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten interpretieren on Tue, 31 Jul 2012 16:17:39 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Die start-end iteratorenpaar Version funktioniert hier dank prvalue auch nicht.</p>
</blockquote>
<p>lambda</p>
<pre><code class="language-cpp">auto v = [](std::ostringstream&amp;&amp; s){ return s &lt;&lt; std::ifstream(&quot;my_binary_file&quot;, std::ios::binary).rdbuf(), [](std::string s){ return std::vector&lt;unsigned char&gt;(begin(s), end(s)); }(s.str()); }(std::ostringstream());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2237377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2237377</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 31 Jul 2012 16:17:39 GMT</pubDate></item></channel></rss>