<?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ärdateien verschiedener Compiler lesen]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>ich hab eine Frage, kann ich Binärdatein lesen, die von einem Java Programm geschrieben wurden? Bei mir funktioniert das nämlich nicht. Ich kann zwar Binärdateien lesen, die ich geschrieben habe, jedoch Dateien mit den gleichen Werten aus Java nicht. Gibt es hier irgendeine Möhlichkeit?</p>
<p>Meine zweite Frage ist, ich habe eine .tiff-Bild und müsste von diesem die Farbwerte einlesen. Hier ist wieder das Problem dass ich nur Gleitkommazahlen bekomme, mit denen ich nichsts anfangen kann. Gibt es in C++ Methoden um dies zu tun? Das komische ist, mit einem Programm in Java oder LabView funktioniert es.</p>
<p>Vielen Dank für eure Hilfe,<br />
mfG Mattias.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/6000/binärdateien-verschiedener-compiler-lesen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 17:51:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/6000.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 May 2003 09:56:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binärdateien verschiedener Compiler lesen on Fri, 30 May 2003 09:56:00 GMT]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>ich hab eine Frage, kann ich Binärdatein lesen, die von einem Java Programm geschrieben wurden? Bei mir funktioniert das nämlich nicht. Ich kann zwar Binärdateien lesen, die ich geschrieben habe, jedoch Dateien mit den gleichen Werten aus Java nicht. Gibt es hier irgendeine Möhlichkeit?</p>
<p>Meine zweite Frage ist, ich habe eine .tiff-Bild und müsste von diesem die Farbwerte einlesen. Hier ist wieder das Problem dass ich nur Gleitkommazahlen bekomme, mit denen ich nichsts anfangen kann. Gibt es in C++ Methoden um dies zu tun? Das komische ist, mit einem Programm in Java oder LabView funktioniert es.</p>
<p>Vielen Dank für eure Hilfe,<br />
mfG Mattias.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29165</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Fri, 30 May 2003 09:56:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdateien verschiedener Compiler lesen on Fri, 30 May 2003 10:00:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Original erstellt von mattias:<br />
<strong>Ich kann zwar Binärdateien lesen, die ich geschrieben habe, jedoch Dateien mit den gleichen Werten aus Java nicht.</strong></p>
</blockquote>
<p>Kann ich mir nicht vorstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29166</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Fri, 30 May 2003 10:00:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdateien verschiedener Compiler lesen on Fri, 30 May 2003 10:30:00 GMT]]></title><description><![CDATA[<p>Ist aber so, sonst würde ich es nicht schreiben, ich hab mal auf einer Intersite gelesen, dass es schon zu Problemen kommen kann wenn unterschiedliche C++ Compiler verwendet werden. Ich kann die Dateien lesen, jedoch werden nicht die richtigen Werte gelesen. Gibt es da unterschiede bei der Architektur der Binädateien, sind Flags anders gesetzt? Hat jemand einen Lösungsvorschlag?<br />
Genauer gesagt sind die Dateien mit Labview geschrieben worden, was aber eigentlich nicht das Problem sein sollte.</p>
<p>Nochmal zur zweiten Frage, beim Einlesen von .tiff-Bildern passiert mir das Gleiche, die Werte die ich einlese sind Schrott.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29167</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Fri, 30 May 2003 10:30:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdateien verschiedener Compiler lesen on Mon, 02 Jun 2003 06:45:00 GMT]]></title><description><![CDATA[<blockquote>
<p>dass es schon zu Problemen kommen kann wenn unterschiedliche C++ Compiler verwendet</p>
</blockquote>
<p>Wenn das so wäre, gäbe es nur einen einzigen Compiler, da sich die anderen gar nicht durchgesetzt hätten.</p>
<p>-&gt;<br />
Es hängt meistens mit dem Data-Align zusammen, was viele Programmierer vergessen, wenn sie Binärdateien schreiben.</p>
<p>z.B.</p>
<pre><code class="language-cpp">// nicht eindeutig -&gt; wird möglicherweise sogar auf verschiedenen Microsoft-Compilern falsch interpretiert.
struct _A
{
  char a;
  int b;
  short c;
};
// jetzt wird es eindeutig
#pragma pack( push, 1)
struct _A
{
  char a;
  int b;
  short c;
};
#pragma pack( pop)
</code></pre>
<p>Das selber gilt für alle anderen Compiler auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29168</guid><dc:creator><![CDATA[RenéG]]></dc:creator><pubDate>Mon, 02 Jun 2003 06:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdateien verschiedener Compiler lesen on Mon, 02 Jun 2003 09:56:00 GMT]]></title><description><![CDATA[<p>Bei diesen Binärdateien wurde kein struct oder was ähnliches verwendet, nur ein simpler array aus float Werten. Ich kann die Dateien mit meinem Programm schreiben und lesen, jedoch kann ich die Dateien nicht lesen, wenn sie von einem Programm in LabView geschrieben wurden, das auch nur ein array mit float Werten schreibt.<br />
Hier die Methode die ich verwende:</p>
<pre><code>// Schreiben einer Binärdatei, nur floats

void CBinFile::wFile(string fName) {
    dat_out = new ofstream;
    fName += &quot;.bin&quot;;
    dat_out-&gt;open(fName.c_str(), ios::out|ios::binary);
    if (dat_out-&gt;rdstate() != ios::goodbit)
        throw &quot;Can't open file &quot; + fName;
    else {
        dat_out-&gt;write((char const*)values, sizeof(float)*elements);
    }
    dat_out-&gt;close();
    delete dat_out;
}

//Lesen von Binärdateien, die floats gespeichert hat

void CBinFile::rFile(string fName) {
    dat_in = new ifstream;
    fName += &quot;.bin&quot;;
    for (int i=0; i&lt;elements; i++) {
        values[i] = 0;
    }

    dat_in-&gt;open(fName.c_str(), ios::in|ios::binary);

    if (dat_in-&gt;rdstate() != ios::goodbit)
        throw &quot;Can't open file &quot; + fName;
    else {
        int loop = 0;
        while(!dat_in-&gt;eof()) {
            dat_in-&gt;read((char *) &amp;values[loop], sizeof(float));
            if(elements - 1 == loop)
                break;
            loop++;
        }
    }
    dat_in-&gt;close();
    delete dat_in;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/29169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29169</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Mon, 02 Jun 2003 09:56:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdateien verschiedener Compiler lesen on Mon, 02 Jun 2003 12:49:00 GMT]]></title><description><![CDATA[<p>Woher weisst Du, dass in LabView float auch wirklich dem float von C entspricht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29170</guid><dc:creator><![CDATA[RenéG]]></dc:creator><pubDate>Mon, 02 Jun 2003 12:49:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdateien verschiedener Compiler lesen on Mon, 02 Jun 2003 12:53:00 GMT]]></title><description><![CDATA[<p>BTW: Was soll das hier?</p>
<pre><code class="language-cpp">dat_out = new ofstream;
// ... code
delete dat_out;
</code></pre>
<p>Lokale Objekte auf den Heap zu schmeißen ist völliger Schwachsinn. Der Stack ist viel schneller.</p>
<p>EDIT: Informiere dich mal über die Größe der LabView-Floats</p>
<p>[ Dieser Beitrag wurde am 02.06.2003 um 14:58 Uhr von <strong>MaSTaH</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29171</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Mon, 02 Jun 2003 12:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdateien verschiedener Compiler lesen on Mon, 02 Jun 2003 14:08:00 GMT]]></title><description><![CDATA[<p>Ich hab die objekte im heap erzeugt, da ich öfter auf einen datei zugreifen muss, und es probleme gab, es öfter im stack zu verwenden, auch wenn ich den stream mit close geschlossen habe.</p>
<p>Es kann nicht viel unterschied zwischen labview und c++ sein, zumindest lassen sich dateien, erstellt in java, in labview lesen, umgekehrt aber nicht, mit dieser mehthode die ich geschrieben habe. Gibt es eine andere möglichkeit binär dateien in c++ zu schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29172</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Mon, 02 Jun 2003 14:08:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdateien verschiedener Compiler lesen on Mon, 02 Jun 2003 15:48:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Original erstellt von mattias:<br />
<strong>Ich hab die objekte im heap erzeugt, da ich öfter auf einen datei zugreifen muss, und es probleme gab, es öfter im stack zu verwenden, auch wenn ich den stream mit close geschlossen habe.</strong></p>
</blockquote>
<p>Dann hast höchstwahrscheinlich <strong>du</strong> etwas falsch gemacht. So nen Mist mit dem Heap macht man nicht. Manchmal ist es sinnvoll auf den Heap auzuweichen aber in der Regel benutzt man bei lokalen Variablen den Stack...</p>
<blockquote>
<p>Original erstellt von mattias:<br />
<strong>Es kann nicht viel unterschied zwischen labview und c++ sein, zumindest lassen sich dateien, erstellt in java, in labview lesen, umgekehrt aber nicht, mit dieser mehthode die ich geschrieben habe.</strong></p>
</blockquote>
<p>float != float. Ich kenne mich mit Java nicht so gut aus. Ein float ist ja eine Fließkommazahl. Ein double aber auch, nur genauer. Guck doch bitte mal nach wieviel Bit die floats in der Datei haben. Es gibt ja auch short int, int und long int. Genauso musst du dir das mit float, double und long double vorstellen.</p>
<blockquote>
<p>Original erstellt von mattias:<br />
<strong>Gibt es eine andere möglichkeit binär dateien in c++ zu schreiben?</strong></p>
</blockquote>
<p>Ja, du könntest ein CFile verwenden (aus den MFC) oder mit fopen etc. arbeiten. Von letzterem würde ich dir aber hier abraten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29173</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Mon, 02 Jun 2003 15:48:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdateien verschiedener Compiler lesen on Tue, 03 Jun 2003 17:03:00 GMT]]></title><description><![CDATA[<p>Ich habe die Lösung für mein Problem gefunden, wie oben vermutet liegt das Problem am Byte Ordering. LabView verwendet Big-Endian beim schreiben von Binärdateien, im Gegensatz zu Windows mit dem dazugehörigen Compiler, das Little-Endian verwendet.</p>
<p>Danke für die Tipps, ich hoffe ihr könnt mir das nächste Mal wieder weiterhelfen. Für alle die das gleiche Problem mit LabView haben, hier ist ein Link, bei dem man zusätzliche Programme für LabView herunterladen kann, und ein detaillierte Fehlerbeschreibung angeben.</p>
<p>[url]<a href="http://digital.ni.com/public.nsf/websearch/97332426D63630EE862565070049FFBB" rel="nofollow">http://digital.ni.com/public.nsf/websearch/97332426D63630EE862565070049FFBB</a> [/url]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29174</guid><dc:creator><![CDATA[mattias]]></dc:creator><pubDate>Tue, 03 Jun 2003 17:03:00 GMT</pubDate></item></channel></rss>