<?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[Textdatei binaer einlesen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich schlage mich hier schon seit einer Weile mit einem Problem rum: Ich hab hier eine Textdatei, welche einen dump einer seriellen Schnittstelle enthaelt. Das ist also ein kontinuierlicher Datenstrom aus Bytes:</p>
<pre><code>7e0113c0c42205050000000088015151002a06002a0600000069637e
7e0113c0c4880c0c1414220022011616002a06002a06002828763e7e
7e0113c0c4880c0c1212220022011616002a06002a0600282807627e
7e0113c0c4880c0c1010220022011616002a06002a0600282828567e
...
</code></pre>
<p>Ich moechte das nun wieder einlesen - und zwar nicht als ASCII-Zeichen sondern halt byteweise - so, dass ich die Werte, die in der Textdatei stehen, quasi direkt in den Speicher kopiere.</p>
<pre><code class="language-cpp">int main()
{
	char buffer[100];
	ifstream myFile(&quot;raw232.log&quot;, ios::in | ios::binary);

	myFile.read(buffer, 100);
}
</code></pre>
<p>Das oben funktioniert nicht, da es die Zeichen als ASCII einliest. Das erste Byte, dass ich haben will, soll buffer[0] = 7e sein. Stattdessen kriege ich buffer[0] = '7', buffer[1] = 'e' usw usw.</p>
<p>Wie kriege ich das binaer eingelesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/268135/textdatei-binaer-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 03:07:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/268135.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Jun 2010 18:43:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Textdatei binaer einlesen on Fri, 04 Jun 2010 18:43:50 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich schlage mich hier schon seit einer Weile mit einem Problem rum: Ich hab hier eine Textdatei, welche einen dump einer seriellen Schnittstelle enthaelt. Das ist also ein kontinuierlicher Datenstrom aus Bytes:</p>
<pre><code>7e0113c0c42205050000000088015151002a06002a0600000069637e
7e0113c0c4880c0c1414220022011616002a06002a06002828763e7e
7e0113c0c4880c0c1212220022011616002a06002a0600282807627e
7e0113c0c4880c0c1010220022011616002a06002a0600282828567e
...
</code></pre>
<p>Ich moechte das nun wieder einlesen - und zwar nicht als ASCII-Zeichen sondern halt byteweise - so, dass ich die Werte, die in der Textdatei stehen, quasi direkt in den Speicher kopiere.</p>
<pre><code class="language-cpp">int main()
{
	char buffer[100];
	ifstream myFile(&quot;raw232.log&quot;, ios::in | ios::binary);

	myFile.read(buffer, 100);
}
</code></pre>
<p>Das oben funktioniert nicht, da es die Zeichen als ASCII einliest. Das erste Byte, dass ich haben will, soll buffer[0] = 7e sein. Stattdessen kriege ich buffer[0] = '7', buffer[1] = 'e' usw usw.</p>
<p>Wie kriege ich das binaer eingelesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906952</guid><dc:creator><![CDATA[Schnapphase]]></dc:creator><pubDate>Fri, 04 Jun 2010 18:43:50 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei binaer einlesen on Fri, 04 Jun 2010 18:59:22 GMT]]></title><description><![CDATA[<p>Dein Programm macht genau das was du ihm sagst. Es liest die Datei binär ein. Was du willst, ist nicht binäres Einlesen, sondern formatiertes Einlesen als zweistellige Hexadezimalzahlen. Das ist ein völliger Unterschied!</p>
<p>Hier mal einen kurzen Code, welcher dir das allgemeine Vorgehen verdeutlichen soll:</p>
<pre><code class="language-cpp">#include &lt;sstream&gt;
#include &lt;iostream&gt;

int main()
{
  std::istringstream iss(&quot;0a0b0c&quot;);
  std::stringstream ss;

  char buffer[2];

  int value;
  while(iss.read(buffer, 2))
  {
    ss.clear();
    ss.write(buffer, 2);
    ss &gt;&gt; std::hex &gt;&gt; value;

    std::cout &lt;&lt; value &lt;&lt; '\n';
  }

  std::cout.flush();

  return 0;
}
</code></pre>
<p>Statt des <code>std::istringstream</code> verwendest du einfach dein <code>std::ifstream</code> . Wobei du noch Spezialzeichen wie Newline oder Carriage Return rausfiltern müsstest.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906960</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 04 Jun 2010 18:59:22 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei binaer einlesen on Fri, 04 Jun 2010 19:04:05 GMT]]></title><description><![CDATA[<p>Dann hast du offensichtlich keinen Bytestrom, sondern einen hex-codierten ASCII-Strom. Da ist ein bisschen umwandeln nötig:</p>
<pre><code class="language-cpp">int main()
{
    char buffer[3];
    ifstream myFile(&quot;raw232.log&quot;, ios::in | ios::binary);

    int bytewert;
    myFile.get(buffer, 3);
    sscanf(buffer,&quot;%X&quot;,&amp;bytewert);
}
</code></pre>
<p>Ungetestet, sollte aber funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906962</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 04 Jun 2010 19:04:05 GMT</pubDate></item></channel></rss>