<?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[Endian]]></title><description><![CDATA[<p>Hallo Liebe Experten,</p>
<p>ich bemühe mich grade portablen Code für OSX/Win32 zu schreiben und sehe mich<br />
mit dem Little-Big-Endian Problem konfrontiert.<br />
Ich brauchen keinen konkreten Code sondern möchte euch fragen welches ihr für<br />
die sinnvollste und effektifste (evl. mit Stylebonus <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="🙂"
    /> Methode haltet eine<br />
BigEndian Datei auf einem LittleEndian System zu verarbeiten.</p>
<p>Der Code ist für Windows bereits implementiert und benutzt massig struct's.</p>
<p>Was ist am besten?</p>
<p>- Jedes struct, bekommt eine Memberfunktion 'swapBytes' die<br />
beim einlesen des File via #ifdef bigEdian aufgerufen wird.</p>
<p>- Bei #ifdef bigEndian das File komplett in den Speicher lesen, die Daten<br />
zu BigEndian konvertieren, als temp Kopie speichern und dann normal weiter<br />
auf dem temp File. (so könnte ich am meisten Code weiter benutzen)</p>
<p>- Die Datei gleich rückwärts lesen, geht das?</p>
<p>Gruß<br />
Marcel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/161596/endian</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 23:43:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161596.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 Oct 2006 15:34:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Endian on Sun, 08 Oct 2006 15:34:37 GMT]]></title><description><![CDATA[<p>Hallo Liebe Experten,</p>
<p>ich bemühe mich grade portablen Code für OSX/Win32 zu schreiben und sehe mich<br />
mit dem Little-Big-Endian Problem konfrontiert.<br />
Ich brauchen keinen konkreten Code sondern möchte euch fragen welches ihr für<br />
die sinnvollste und effektifste (evl. mit Stylebonus <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="🙂"
    /> Methode haltet eine<br />
BigEndian Datei auf einem LittleEndian System zu verarbeiten.</p>
<p>Der Code ist für Windows bereits implementiert und benutzt massig struct's.</p>
<p>Was ist am besten?</p>
<p>- Jedes struct, bekommt eine Memberfunktion 'swapBytes' die<br />
beim einlesen des File via #ifdef bigEdian aufgerufen wird.</p>
<p>- Bei #ifdef bigEndian das File komplett in den Speicher lesen, die Daten<br />
zu BigEndian konvertieren, als temp Kopie speichern und dann normal weiter<br />
auf dem temp File. (so könnte ich am meisten Code weiter benutzen)</p>
<p>- Die Datei gleich rückwärts lesen, geht das?</p>
<p>Gruß<br />
Marcel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151493</guid><dc:creator><![CDATA[Binarys]]></dc:creator><pubDate>Sun, 08 Oct 2006 15:34:37 GMT</pubDate></item><item><title><![CDATA[Reply to Endian on Sun, 08 Oct 2006 21:48:09 GMT]]></title><description><![CDATA[<p>mit dem endian haben nur die marken(sprich variablen- und funktions-positionen) und nicht die komplete exe-file. somit ist</p>
<p>Binarys schrieb:</p>
<blockquote>
<p>- Die Datei gleich rückwärts lesen, geht das?</p>
</blockquote>
<p>nicht möglich.<br />
willst du überhaupt exe-files oder code-files endian umwandeln? beim code müsste das (glaube ich: in c/c++) beim linken passieren. aber ein normaler compiler bring die funktion schon mit sich. gcc &gt; --big-endian oder --little-endian als parameter übergeben. und exe-files kenne ich keine möglichkeit und ich vermutte auch mal das sowas nicht geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151703</guid><dc:creator><![CDATA[itwasntpete]]></dc:creator><pubDate>Sun, 08 Oct 2006 21:48:09 GMT</pubDate></item><item><title><![CDATA[Reply to Endian on Sun, 08 Oct 2006 23:00:31 GMT]]></title><description><![CDATA[<p>Im Quellcode selbst ist das transparent und daher sind keine Änderungen notwendig, außer man macht irgendwelche spezielle Sachen auf Byte-Arrays.</p>
<p>Nur z.b. solche Sachen müssen gesondert behandelt werden:</p>
<p>int sei 32bit groß</p>
<p>little endian variante:</p>
<p>int i = 12345678;<br />
char * p = (char *)&amp;i;<br />
char lsb = p[0];</p>
<p>big endian:</p>
<p>int i = 12345678;<br />
char * p = (char *)&amp;i;<br />
char lsb = p[3];</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151720</guid><dc:creator><![CDATA[MichiK]]></dc:creator><pubDate>Sun, 08 Oct 2006 23:00:31 GMT</pubDate></item><item><title><![CDATA[Reply to Endian on Tue, 10 Oct 2006 21:30:16 GMT]]></title><description><![CDATA[<p>Hi, eigentlich will ich nur eine Binär-Datei einlesen.<br />
(und dabei so wenig code wie möglich anpassen müssen)<br />
Leider sind meine bisherigen Versuche nicht von Erfolg<br />
gekrönt.</p>
<pre><code>[cpp]
int length;
char * buffer;

//die Litte-Endian Binardatei öffnen und lesen
ifstream ifs (filename, ios::binary | ios::in);
ifs.seekg (0, ios::end);
length = ifs.tellg();
ifs.seekg (0, ios::beg);
buffer = new char [length];
ifs.read (buffer,length);
ifs.close();

// unter OSX den buffer von Litte-Endian nach Big-Endian swapen
register int i = 0;
register int j = length;
while (i&lt;j)
{
   swap(buffer[i], buffer[j]);
   i++, j--;
}
// ... weiter wie unter Win
[/cpp]
</code></pre>
<p>Also, zu mindest in meiner Fantasie, sollte das den ganzen datei<br />
inhalt einmal umdrehen. Klappt aber nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1152496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1152496</guid><dc:creator><![CDATA[Binarys]]></dc:creator><pubDate>Tue, 10 Oct 2006 21:30:16 GMT</pubDate></item><item><title><![CDATA[Reply to Endian on Wed, 11 Oct 2006 18:59:25 GMT]]></title><description><![CDATA[<p>du kannst nicht einfach die datei umkehren. das endian wirkt sich nicht auf die komplete datei aus, sondern unr auf positionen, sprich marken und variablen.<br />
ein kleines assembler-beispiel:</p>
<pre><code class="language-asm">jmp addresse
variable dd 12
addresse:
add ax, variable
</code></pre>
<p>sprunglänge jmp -&gt; addresse = 4byte.<br />
variable = 0C hex.<br />
dieser code wird zu EB <em>04 00</em> <strong>0C 00 00 00</strong> 83 C0 02 assembliert. dabei ist kursiv die addresse und fett die variable darstellt. diese ist nun in little-endian und deswegen ist <em>04</em> <strong>0C</strong> vorne. willst du es in big-endian müsste die bin so aussehen: EB <em>00 04</em> <strong>00 00 00 OC</strong> 83 C0 02 aussehen.<br />
diese marken (addressen) sind in c++ z.b. jedes <strong>if .. else</strong> und so ziemlich die komplete syntax. (auch <strong>goto</strong> :))</p>
<p>wenn du jetzt eine binary hast bei der du nicht weist wo sich die maken befinden, die du rückwärts speichern sollst, dann kannst du deine datei auch nicht konvertieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153119</guid><dc:creator><![CDATA[itwasntpete]]></dc:creator><pubDate>Wed, 11 Oct 2006 18:59:25 GMT</pubDate></item><item><title><![CDATA[Reply to Endian on Wed, 11 Oct 2006 21:45:49 GMT]]></title><description><![CDATA[<p>Super, vielen dank!</p>
<p>Das erklärt mein Problem und die Lösung ist dann auch klar<br />
(mein erster Ansatz weiter oben).</p>
<p>Danke! <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="👍"
    /><br />
Lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153194</guid><dc:creator><![CDATA[Binarys]]></dc:creator><pubDate>Wed, 11 Oct 2006 21:45:49 GMT</pubDate></item><item><title><![CDATA[Reply to Endian on Wed, 11 Oct 2006 22:30:07 GMT]]></title><description><![CDATA[<p>Ob man swapen muß, hängt ganz vom Dateiformat ab.<br />
Swapen muß man nur Werte, die aus mehren Bytes bestehen.<br />
Gewöhnliche Byte-streams werden hingägen überall gleichbehandelt.<br />
Wenn es sich z.b um ein int-stream handelt, muß man alle ints swappen.<br />
Big-Endian bedeutet sicher _nicht_, daß der byte-stream komplett umgedreht im File steht.</p>
<p>MfG, Michael</p>
<p>PS. Ich habe damit Erfahrungen (z.b. DICOM-Format, daß sowohl Little-Endian, als auch Big-Endian codiert sein kann)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153207</guid><dc:creator><![CDATA[MichiK]]></dc:creator><pubDate>Wed, 11 Oct 2006 22:30:07 GMT</pubDate></item><item><title><![CDATA[Reply to Endian on Wed, 11 Oct 2006 23:19:57 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13801">@Binarys</a></p>
<p>MichiK schrieb:</p>
<blockquote>
<p>Swapen muß man nur Werte, die aus mehren Bytes bestehen.<br />
Gewöhnliche Byte-streams werden hingägen überall gleichbehandelt.</p>
</blockquote>
<p>ja genau. ein string bleibt so wie er ist. also &quot;string&quot; wird <strong>nicht</strong> zu &quot;gnirts&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/100">@MichiK</a><br />
was ist DICOM??? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1153213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153213</guid><dc:creator><![CDATA[itwasntpete]]></dc:creator><pubDate>Wed, 11 Oct 2006 23:19:57 GMT</pubDate></item><item><title><![CDATA[Reply to Endian on Thu, 12 Oct 2006 09:41:13 GMT]]></title><description><![CDATA[<p>DICOM ist ein Format für die Übertragung von medizinischen Daten (Digital Imaging and Communications in Medecine), s.a <a href="http://de.wikipedia.org/wiki/DICOM" rel="nofollow">http://de.wikipedia.org/wiki/DICOM</a><br />
Auch dort muß man je nach Plattform die Daten entsprechend der Endian-Order behandeln (aber dies ist bei diesem Standard genau spezifiziert).</p>
<p>Ich weiß das, weil ich selber einen DICOM-Viewer und WebClient geschrieben habe (welcher Daten von einem DICOM-Server abruft).</p>
<p>Und MichiK, was hast du mit DICOM zu schaffen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1153318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1153318</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Thu, 12 Oct 2006 09:41:13 GMT</pubDate></item></channel></rss>