<?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[endianness]]></title><description><![CDATA[<p>hi</p>
<p>ich habe nach dem thema endianness gegoogled, fand aber oft lösungen spezifisch für msvc++, was mir natürlich nicht gefällt.<br />
was ich tun möchte: ein windows-bitmap generieren. in der dateiformat-spezifikation steht drin, dass die zahlen nach little-endian-konversion gespeichert werden sollen. kann ich vielleicht sogar einen wrapper für einen long machen, der - sofern er an einen stream gegeben wird - little-endianness garantiert? mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320520/endianness</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 02:40:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320520.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 Oct 2013 11:13:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to endianness on Tue, 01 Oct 2013 11:13:39 GMT]]></title><description><![CDATA[<p>hi</p>
<p>ich habe nach dem thema endianness gegoogled, fand aber oft lösungen spezifisch für msvc++, was mir natürlich nicht gefällt.<br />
was ich tun möchte: ein windows-bitmap generieren. in der dateiformat-spezifikation steht drin, dass die zahlen nach little-endian-konversion gespeichert werden sollen. kann ich vielleicht sogar einen wrapper für einen long machen, der - sofern er an einen stream gegeben wird - little-endianness garantiert? mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357037</guid><dc:creator><![CDATA[dau123]]></dc:creator><pubDate>Tue, 01 Oct 2013 11:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to endianness on Tue, 01 Oct 2013 11:57:39 GMT]]></title><description><![CDATA[<p>Da du ein Windows-Bitmap generieren willst, ist es möglich, dass die Datei nur auf Windows benutzt wird? Dann kannst du davon ausgehen, dass der integer bereist in little endian ist.</p>
<p>Für einen BigEndian Prozessor musst du die bytes manuell tauschen. Ich habe dazu das gefunden, du solltest es aber noch anpassen (macros durch überladene Funktionen ersetzen).</p>
<pre><code>#define bswap_16(X) ((((X)&amp;0xFF) &lt;&lt; 8) | (((X)&amp;0xFF00) &gt;&gt; 8))
	#define bswap_32(X) ( (((X)&amp;0x000000FF)&lt;&lt;24) | (((X)&amp;0xFF000000) &gt;&gt; 24) | (((X)&amp;0x0000FF00) &lt;&lt; 8) | (((X) &amp;0x00FF0000) &gt;&gt; 8))
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2357048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357048</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Tue, 01 Oct 2013 11:57:39 GMT</pubDate></item><item><title><![CDATA[Reply to endianness on Tue, 01 Oct 2013 12:13:14 GMT]]></title><description><![CDATA[<p>dau123 schrieb:</p>
<blockquote>
<p>kann ich vielleicht sogar einen wrapper für einen long machen, der - sofern er an einen stream gegeben wird - little-endianness garantiert?</p>
</blockquote>
<p>Ja - das geht mit einem selbst gebauten Stream, der binär schreibt - Beispiel <a href="http://www.c-plusplus.net/forum/p1935469#1935469" rel="nofollow">hier</a> und <a href="http://www.c-plusplus.net/forum/p1675962#1675962" rel="nofollow">da</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357052</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 01 Oct 2013 12:13:14 GMT</pubDate></item><item><title><![CDATA[Reply to endianness on Tue, 01 Oct 2013 13:34:05 GMT]]></title><description><![CDATA[<p>hmm, da ich selbst natürlich mit klassen arbeite und diese bislang auch mit dem opterator&lt;&lt; ausgegeben werden, gefällt mir werners lösung schon eher. danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357068</guid><dc:creator><![CDATA[dau123]]></dc:creator><pubDate>Tue, 01 Oct 2013 13:34:05 GMT</pubDate></item><item><title><![CDATA[Reply to endianness on Tue, 01 Oct 2013 14:55:23 GMT]]></title><description><![CDATA[<p>gerade noch eine folgefrage zum selben thema:<br />
da der streambuf einen char erwartet (der leider signed ist), ist das verhalten denn definiert wenn ich z.b. einen wert wie 200 da &quot;reinpresse&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357100</guid><dc:creator><![CDATA[dau123]]></dc:creator><pubDate>Tue, 01 Oct 2013 14:55:23 GMT</pubDate></item><item><title><![CDATA[Reply to endianness on Tue, 01 Oct 2013 15:22:01 GMT]]></title><description><![CDATA[<p>Marthog schrieb:</p>
<blockquote>
<p>Für einen BigEndian Prozessor musst du die bytes manuell tauschen. Ich habe dazu das gefunden, du solltest es aber noch anpassen (macros durch überladene Funktionen ersetzen).</p>
<pre><code>#define bswap_16(X) ((((X)&amp;0xFF) &lt;&lt; 8) | (((X)&amp;0xFF00) &gt;&gt; 8))
	#define bswap_32(X) ( (((X)&amp;0x000000FF)&lt;&lt;24) | (((X)&amp;0xFF000000) &gt;&gt; 24) | (((X)&amp;0x0000FF00) &lt;&lt; 8) | (((X) &amp;0x00FF0000) &gt;&gt; 8))
</code></pre>
</blockquote>
<p>Sowas sollte man nicht machen. Wenn man eine bestimmte Endianess erzwingen möchte, kann man das portabel über die Shift-Operatoren erreichen. Siehe auch <a href="http://commandcenter.blogspot.de/2012/04/byte-order-fallacy.html" rel="nofollow">http://commandcenter.blogspot.de/2012/04/byte-order-fallacy.html</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357108</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Tue, 01 Oct 2013 15:22:01 GMT</pubDate></item></channel></rss>