<?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ären String in Zahlen auslesen]]></title><description><![CDATA[<p>Hallo!<br />
Ich habe eine binäre Datei, die ich auslesen möchte. Es sollen Zahlen drinstehen.<br />
Ich habe mir gedacht, ich öffne die Datei im binär-Modus mit fstream, und lese sie zeilenweise aus. dann bekomme ich einen(viele) strings mit den binär kodierten Zahlen.<br />
Ich weiß, dass eine Zahl in 4 bytes kodiert ist, als möchte ich jetzt immer 4 bytes auslesen und diese dann in float konvertieren. Im Code sieht das ganze so aus:</p>
<pre><code class="language-cpp">ifstream vtk(&lt;pfad);
string lbr1;
getline(vtk,lbr1);
istringstream lineb1(lbr1);
if(!lineb1){ cout&lt;&lt;&quot;Fehler bei lineb1&quot;&lt;&lt;endl;
			 return 1;
			}
char vierbyte[5];
lineb1.get(vierbyte,5);
float wert;
cout&lt;&lt;vierbyte&lt;&lt;endl;
string vier=vierbyte;
istringstream v(vier);
v&gt;&gt;wert;
cout&lt;&lt;&quot;1.Wert: &quot;&lt;&lt;wert&lt;&lt;endl;
</code></pre>
<p>Leider kommt bei mir aber für den Wert ein blödsinn raus, der wert kann so nicht stimmen. Interessanterweise ändert er sich auch nicht, wenn ich andere bytes konvertieren möchte, d.h ich habe die ersten 2 zeichen des strings herausgenommen und dann die zeichen 3-6 in float konvertiert - ergibt für wert dieselbe Zahl.<br />
????</p>
<p>lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207421/binären-string-in-zahlen-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 08:59:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207421.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Mar 2008 12:08:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Fri, 07 Mar 2008 14:02:11 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich habe eine binäre Datei, die ich auslesen möchte. Es sollen Zahlen drinstehen.<br />
Ich habe mir gedacht, ich öffne die Datei im binär-Modus mit fstream, und lese sie zeilenweise aus. dann bekomme ich einen(viele) strings mit den binär kodierten Zahlen.<br />
Ich weiß, dass eine Zahl in 4 bytes kodiert ist, als möchte ich jetzt immer 4 bytes auslesen und diese dann in float konvertieren. Im Code sieht das ganze so aus:</p>
<pre><code class="language-cpp">ifstream vtk(&lt;pfad);
string lbr1;
getline(vtk,lbr1);
istringstream lineb1(lbr1);
if(!lineb1){ cout&lt;&lt;&quot;Fehler bei lineb1&quot;&lt;&lt;endl;
			 return 1;
			}
char vierbyte[5];
lineb1.get(vierbyte,5);
float wert;
cout&lt;&lt;vierbyte&lt;&lt;endl;
string vier=vierbyte;
istringstream v(vier);
v&gt;&gt;wert;
cout&lt;&lt;&quot;1.Wert: &quot;&lt;&lt;wert&lt;&lt;endl;
</code></pre>
<p>Leider kommt bei mir aber für den Wert ein blödsinn raus, der wert kann so nicht stimmen. Interessanterweise ändert er sich auch nicht, wenn ich andere bytes konvertieren möchte, d.h ich habe die ersten 2 zeichen des strings herausgenommen und dann die zeichen 3-6 in float konvertiert - ergibt für wert dieselbe Zahl.<br />
????</p>
<p>lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469955</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Fri, 07 Mar 2008 14:02:11 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Fri, 07 Mar 2008 13:49:59 GMT]]></title><description><![CDATA[<p>hallo Isomorphismus <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>
<p>zunächst: Falsches Forum, imho.<br />
für die zukunft: code-tags verwenden.</p>
<p>zunächst 2: Wie wärs, wenn du die datei erstmal im binärmodus öffnest, sonst kann das auch nix werden, wenn du was binäres lesen willst...? <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>da der aufbau der zu lesenden datei fehlt, würde ich sagen,<br />
wenn in jeder zeile nur 1 float zahl steht, erspar dir das binäre lesen und das umwandeln in einen string (wozu auch? mit getline kommst du bei binär-dateien auch nicht soo weit, es gibt ja kein textliches zeilenende) sieht das ganze dann so aus:</p>
<pre><code class="language-cpp">while(! file.eof()) {
    float value;
    if(file &gt;&gt; value) {
        cout &lt;&lt; value &lt;&lt; endl;
    }
}
</code></pre>
<p>wenn es wirklich binär sein soll, nimmst du halt read</p>
<pre><code class="language-cpp">float value;
file.read(reinterpret_cast&lt;char*&gt;(&amp;value), sizeof(float));
</code></pre>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470040</guid><dc:creator><![CDATA[Xantus]]></dc:creator><pubDate>Fri, 07 Mar 2008 13:49:59 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Fri, 07 Mar 2008 14:46:53 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-9713.html" rel="nofollow">estartu</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-1.html" rel="nofollow">MFC (Visual C++)</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470070</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 07 Mar 2008 14:46:53 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Fri, 07 Mar 2008 15:26:36 GMT]]></title><description><![CDATA[<p>Habe ich das richtig verstanden, das deine Datei zB so aussieht:</p>
<pre><code>0000 0000 0001 1010
...
</code></pre>
<p>Ausgabe:<br />
1. Wert : 26</p>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470099</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 07 Mar 2008 15:26:36 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Fri, 07 Mar 2008 15:32:16 GMT]]></title><description><![CDATA[<p>Hi!<br />
Also mit dem Reinterpret-cast funktioniert nun das lesen, aber leider immer noch nicht richtig (ich bekommen nicht die richtigen werte heraus. vielleicht liegt das aber auch daran, dass ich vorher falsch lese:<br />
ich habe nämlich eine text-datei, in der vorher etwa 10 zeilen &quot;normaler&quot; Text, also in ASCII steht, diese Zeilen hole ich mit getline heraus und dann fängt erst das binäre Lesen an. Das ganze sieht so aus:</p>
<pre><code>fin.open(cs,ios::binary);
 if(!fin) cout&lt;&lt;&quot;Fehler!&quot;&lt;&lt;endl;
 getline(fin,header);
 cout&lt;&lt;header&lt;&lt;endl;

 string title;
 getline(fin,title);
 cout&lt;&lt;title&lt;&lt;endl; 

 string datatype,geometry,dimensions,origin,spacing,pointdata,scalars,lookuptable;
 getline(fin,datatype);
 getline(fin,geometry);
 getline(fin,dimensions);
 getline(fin,origin);
 getline(fin,spacing);
 getline(fin,pointdata);
 getline(fin,scalars);
 getline(fin,lookuptable);//last line in ASCII

 cout&lt;&lt;lookuptable&lt;&lt;endl; //nach dieser Zeile fangen Binärdaten an

for(int i=0;i&lt;7;i++)
{float wert;
 fin.read(reinterpret_cast&lt;char*&gt;(&amp;wert), sizeof(float));
 cout&lt;&lt;&quot;Wert: &quot;&lt;&lt;wert&lt;&lt;endl;
}
</code></pre>
<p>Die Werte sollten zwischen 4000 und 20000 liegen und ich bekomme aber auch negative..<br />
liegt das am code, fange ich falsch an zu lesen? kann ich denn überhaupt mit getline lesen, wenn ich die datei im binärmodus geöffnet habe? es funktioniert, ich bekomme damit was ich will, aber ändere ich vielleicht implizit an dem öffnugsmodus etwas?</p>
<p>lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470107</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Fri, 07 Mar 2008 15:32:16 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Fri, 07 Mar 2008 20:10:56 GMT]]></title><description><![CDATA[<p>tja, ich glaube helfen wird ohne eine genauere darstellung der datei (z.b. hexdump) nicht möglich sein, also zeig mal, WAS du genau lesen willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470299</guid><dc:creator><![CDATA[Xantus]]></dc:creator><pubDate>Fri, 07 Mar 2008 20:10:56 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Tue, 11 Mar 2008 10:34:24 GMT]]></title><description><![CDATA[<p>Ich kopiere mal einen Teil der Datei in Codeform hier hinein:</p>
<pre><code># vtk DataFile Version 2.0
s3cfa1-u2 t 1866.0106
BINARY
DATASET STRUCTURED_POINTS
DIMENSIONS 259 425 393
ORIGIN 0.0 0.0 0.0 
SPACING 758978.0 980032.0 979968.0 
POINT_DATA 43259475
SCALARS t float 1
LOOKUP_TABLE default
E•!ªE•«vE–úE–ƒE–öE—\ E—ÅÃE˜?&amp;E˜µIE™4²E™Æ“EšmàE›&quot;óE›è÷EœÃÀE¹4EžÍEŸúÁE¡G[E¢«FE¤*tE¥ÌLE§‘(E©~/E«‰‘E­­`E°éE²ÆEµ£_E¸¿GE¼ZEEÀjÀEÅ3XEÊÍEÒ
dEÛ’PEè
</code></pre>
<p>das file ist noch länger, aber der Rest ist ebenfalls binär wie die letzten 3 Zeilen, da ändert sich dann nicht mehr viel.</p>
<p>Tatsache ist, dass ich die ersten 10 Zeilen, die ja in ASCII geschrieben sind, mit getline auslese, das funktioniert ganz gut. dann steht mein reader bei der ersten Zeile, die binär kodiert ist und dann lese ich mit float und einem buffer von 4 byte immer 4 byte aus. Prinzipiell funktioniert das auch, aber es kommen einfach nicht die richtigen Zahlen heraus, die in dem File drinnen stehen sollten.</p>
<p>lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471937</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Tue, 11 Mar 2008 10:34:24 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Tue, 11 Mar 2008 10:41:47 GMT]]></title><description><![CDATA[<p>Mein erster Gedanke und aus Zeitmangel nicht weiter verfolgt:</p>
<p>Nach dem Einlesen der ersten Zeilen hast du ja die Position in der Datei im Stream stehen. Merk dir die, öffne die Datei dann erneut im binären Modus und spring an die Stelle. Dann sollte es gehen. Denke ich zumindest. <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/1471941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471941</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 11 Mar 2008 10:41:47 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Tue, 11 Mar 2008 11:06:53 GMT]]></title><description><![CDATA[<p>klingt gut, aber welches flag muss ich denn anhängen, um den DateiReader an eine bestimmte stelle zu setzen? ich finds einfach nicht im netz. und wie kann ich die position des Readers in einem offenen Stream feststellen?</p>
<p>lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471959</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Tue, 11 Mar 2008 11:06:53 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Tue, 11 Mar 2008 11:21:09 GMT]]></title><description><![CDATA[<p><a href="http://www.cppreference.com/cppio/tellg.html" rel="nofollow">http://www.cppreference.com/cppio/tellg.html</a><br />
<a href="http://www.cppreference.com/cppio/seekg.html" rel="nofollow">http://www.cppreference.com/cppio/seekg.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471970</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 11 Mar 2008 11:21:09 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Tue, 11 Mar 2008 11:55:15 GMT]]></title><description><![CDATA[<p>thx, also die position bestimmten und dann dort weiterlesen funktioniert. ich bekomme allerdings dieselben zahlen heraus, die ich auch vorher bekommen habe, als ich einfach weitergelesen habe.<br />
langsam bin ich echt verzweifelt!<br />
kann es sein, dass da irgendwelche leerzeichen dazwischen stehen oder so, sodass ich nach 4 byte etwas rausnehmen muss?</p>
<p>lg<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471990</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Tue, 11 Mar 2008 11:55:15 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Tue, 11 Mar 2008 12:06:47 GMT]]></title><description><![CDATA[<p>Ist die Bytereihenfolge denn richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471998</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 11 Mar 2008 12:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Tue, 11 Mar 2008 12:37:46 GMT]]></title><description><![CDATA[<p>?? kann sie denn falsch sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472021</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Tue, 11 Mar 2008 12:37:46 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Tue, 11 Mar 2008 12:54:10 GMT]]></title><description><![CDATA[<p>Nicht unbedingt falsch, sondern eher anders.<br />
Hast du denn mal die eingelesenen Bytes mit den erwarteten verglichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472035</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 11 Mar 2008 12:54:10 GMT</pubDate></item><item><title><![CDATA[Reply to binären String in Zahlen auslesen on Wed, 12 Mar 2008 09:33:45 GMT]]></title><description><![CDATA[<p>ok, es war das byteordering. ich sie waren im bigEndian gespeichert und ich wollte mit littleEndian auslesen..</p>
<p>Vielen Dank für deine Hilfe!!<br />
lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472618</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Wed, 12 Mar 2008 09:33:45 GMT</pubDate></item></channel></rss>