<?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[Schnelles vertauschen von Bytes?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem: Ich muß Bytes vertauschen, das geht auch wunderbar mit bitshifts! Aber leider benötige ich dafür 5 casts <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>
<p>Hier mein Code:</p>
<pre><code class="language-cpp">unsigned long value_old = create_color (255, 128, 64, 32);
    unsigned long value_new = create_color (static_cast&lt;unsigned char&gt;(value &gt;&gt;  0), 
                                            static_cast&lt;unsigned char&gt;(value &gt;&gt;  8), 
                                            static_cast&lt;unsigned char&gt;(value &gt;&gt; 16), 
                                            static_cast&lt;unsigned char&gt;(value &gt;&gt; 24));
</code></pre>
<p>Das klappt 1a! Nur ist wegen den 5 Casts relativ &quot;unschön&quot; und auch nicht flott zur Laufzeit.</p>
<p>Wie kann man das verbessern?! Also ohne casts und mehr power? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>mfg!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156663/schnelles-vertauschen-von-bytes</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 21:22:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156663.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Aug 2006 19:41:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Fri, 18 Aug 2006 19:41:50 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem: Ich muß Bytes vertauschen, das geht auch wunderbar mit bitshifts! Aber leider benötige ich dafür 5 casts <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>
<p>Hier mein Code:</p>
<pre><code class="language-cpp">unsigned long value_old = create_color (255, 128, 64, 32);
    unsigned long value_new = create_color (static_cast&lt;unsigned char&gt;(value &gt;&gt;  0), 
                                            static_cast&lt;unsigned char&gt;(value &gt;&gt;  8), 
                                            static_cast&lt;unsigned char&gt;(value &gt;&gt; 16), 
                                            static_cast&lt;unsigned char&gt;(value &gt;&gt; 24));
</code></pre>
<p>Das klappt 1a! Nur ist wegen den 5 Casts relativ &quot;unschön&quot; und auch nicht flott zur Laufzeit.</p>
<p>Wie kann man das verbessern?! Also ohne casts und mehr power? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>mfg!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119954</guid><dc:creator><![CDATA[#########]]></dc:creator><pubDate>Fri, 18 Aug 2006 19:41:50 GMT</pubDate></item><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Fri, 18 Aug 2006 19:44:26 GMT]]></title><description><![CDATA[<p>sorry, funktion noch vergessen!</p>
<pre><code class="language-cpp">unsigned long create_color (unsigned char a, unsigned char r, unsigned char g, unsigned char b)
{
    return (static_cast&lt;unsigned long&gt;((a &lt;&lt; 24)|(r &lt;&lt; 16)|(g &lt;&lt; 8)|(b)));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1119955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119955</guid><dc:creator><![CDATA[##########]]></dc:creator><pubDate>Fri, 18 Aug 2006 19:44:26 GMT</pubDate></item><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Fri, 18 Aug 2006 20:07:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>und auch nicht flott zur Laufzeit</p>
</blockquote>
<p>static_cast haben keinen Einfluß zur Laufzeit, sondern werden komplett zur Compiletime ausgewertet. Das verwechselst du mit dynamic_cast.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119964</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 18 Aug 2006 20:07:05 GMT</pubDate></item><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Fri, 18 Aug 2006 20:14:29 GMT]]></title><description><![CDATA[<p>akari schrieb:</p>
<blockquote>
<p>Hallo</p>
<blockquote>
<p>und auch nicht flott zur Laufzeit</p>
</blockquote>
<p>static_cast haben keinen Einfluß zur Laufzeit, sondern werden komplett zur Compiletime ausgewertet. Das verwechselst du mit dynamic_cast.</p>
<p>bis bald<br />
akari</p>
</blockquote>
<p>komisch, also mein GCC und Profiler sagen da aber ganz was anderes?! Je mehr casts ich reinstopfe, desto lamer wird das teil!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119968</guid><dc:creator><![CDATA[###########]]></dc:creator><pubDate>Fri, 18 Aug 2006 20:14:29 GMT</pubDate></item><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Fri, 18 Aug 2006 20:17:45 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>das hat dann aber nichts mit den casts an sich zu tun, denn die sagen dem Compiler ja nur das er den einen Byteblock mit einem anderen Typ ansprechen soll. Und zur Laufzeit kennt C++ ja ohne RTTI ja dann keine Typen mehr.</p>
<p>Statt den Shifts kannst du besser <a href="http://www.willemer.de/informatik/cpp/sysprog.htm" rel="nofollow">Bitmasken</a> benutzen, um bestimme Bits zu bekommen.</p>
<p>bis bald<br />
kari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1119971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119971</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 18 Aug 2006 20:17:45 GMT</pubDate></item><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Fri, 18 Aug 2006 20:50:21 GMT]]></title><description><![CDATA[<p>ich habe folgendes mal gemacht, doch da kommt nur 0 raus, warum?</p>
<pre><code class="language-cpp">(value) = ((value) &gt;&gt; 8) | ((value) &lt;&lt; 8) &amp; 0x00FF;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1119992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1119992</guid><dc:creator><![CDATA[##########]]></dc:creator><pubDate>Fri, 18 Aug 2006 20:50:21 GMT</pubDate></item><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Fri, 18 Aug 2006 23:31:01 GMT]]></title><description><![CDATA[<p>######### schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>ich habe folgendes Problem: Ich muß Bytes vertauschen, das geht auch wunderbar mit bitshifts! Aber leider benötige ich dafür 5 casts <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>
<p>Hier mein Code:</p>
<pre><code class="language-cpp">unsigned long value_old = create_color (255, 128, 64, 32);
    unsigned long value_new = create_color (static_cast&lt;unsigned char&gt;(value &gt;&gt;  0), 
                                            static_cast&lt;unsigned char&gt;(value &gt;&gt;  8), 
                                            static_cast&lt;unsigned char&gt;(value &gt;&gt; 16), 
                                            static_cast&lt;unsigned char&gt;(value &gt;&gt; 24));
</code></pre>
<p>Das klappt 1a! Nur ist wegen den 5 Casts relativ &quot;unschön&quot; und auch nicht flott zur Laufzeit.</p>
<p>Wie kann man das verbessern?! Also ohne casts und mehr power? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>mfg!</p>
</blockquote>
<p>Programmiere mit VC++ 8.0, wenn es schnell sein soll, nimmt man Assembler-Befehle mit rein!</p>
<pre><code class="language-cpp">unsigned long create_colorA(unsigned long value)
{
   _asm mov      eax, value // Byte-Order 1 2 3 4
   _asm bswap    eax        // Byte-Order 4 3 2 1
}  //Ergebnis in eax = return value;

int main(void) 
{ 
   unsigned char test[] = {255, 128,64,32 }; 
   unsigned long* value = reinterpret_cast&lt;unsigned long*&gt;(test);

   unsigned result1 = create_colorA(*value);

   unsigned long result2 = create_color(static_cast&lt;unsigned char&gt;(*value &gt;&gt;  0), 
                                         static_cast&lt;unsigned char&gt;(*value &gt;&gt;  8), 
                                         static_cast&lt;unsigned char&gt;(*value &gt;&gt; 16), 
                                         static_cast&lt;unsigned char&gt;(*value &gt;&gt; 24));
   return 0;
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120066</guid><dc:creator><![CDATA[gerie]]></dc:creator><pubDate>Fri, 18 Aug 2006 23:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Sat, 19 Aug 2006 08:30:09 GMT]]></title><description><![CDATA[<p>Wenn wir Visual C++8.0 einsetzen, benutzen wir intrinsics (bzw. runtime funktionen, die auch eine intrinsic form haben) und sind so noch ganz nebenbei 64bit-kompatibel:</p>
<pre><code class="language-cpp">#if _MSC_VER &gt;= 1300
#include &lt;stdio.h&gt;
inline unsigned byte_swap(unsigned x) { return _byteswap_ulong( x ); }
#elif defined __GNUC__ &amp;&amp; defined __X86__
inline unsigned byte_swap(unsigned x)
{
    __asm( &quot;bswapl %0&quot; : &quot;=r&quot; ( x ) : &quot;0&quot; ( x ) );
    return x;
}
#else
inline unsigned byte_swap(unsigned x)
{
    return x &gt;&gt; 24 | ( ( x &gt;&gt; 8 ) &amp; 0xff00 ) | ( ( x &amp; 0xff00 ) &lt;&lt; 8 ) | x &lt;&lt; 24;
}
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1120123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120123</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 19 Aug 2006 08:30:09 GMT</pubDate></item><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Sat, 19 Aug 2006 09:18:08 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Wenn wir Visual C++8.0 einsetzen, benutzen wir intrinsics (bzw. runtime funktionen, die auch eine intrinsic form haben) und sind so noch ganz nebenbei 64bit-kompatibel:</p>
<pre><code class="language-cpp">#if _MSC_VER &gt;= 1300
#include &lt;stdio.h&gt;
inline unsigned byte_swap(unsigned x) { return _byteswap_ulong( x ); }
#elif defined __GNUC__ &amp;&amp; defined __X86__
inline unsigned byte_swap(unsigned x)
{
    __asm( &quot;bswapl %0&quot; : &quot;=r&quot; ( x ) : &quot;0&quot; ( x ) );
    return x;
}
#else
inline unsigned byte_swap(unsigned x)
{
    return x &gt;&gt; 24 | ( ( x &gt;&gt; 8 ) &amp; 0xff00 ) | ( ( x &amp; 0xff00 ) &lt;&lt; 8 ) | x &lt;&lt; 24;
}
#endif
</code></pre>
</blockquote>
<p>So wie das da steht funktioniert es nicht mit VC++ 8.0, error C3861: &quot;_byteswap_ulong&quot;: Bezeichner wurde nicht gefunden.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120145</guid><dc:creator><![CDATA[gerie]]></dc:creator><pubDate>Sat, 19 Aug 2006 09:18:08 GMT</pubDate></item><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Sat, 19 Aug 2006 09:38:05 GMT]]></title><description><![CDATA[<p>gerie schrieb:</p>
<blockquote>
<p>So wie das da steht funktioniert es nicht mit VC++ 8.0, error C3861: &quot;_byteswap_ulong&quot;: Bezeichner wurde nicht gefunden.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
</blockquote>
<p>stiimt. muss &lt;stdlib.h&gt; sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120153</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 19 Aug 2006 09:38:05 GMT</pubDate></item><item><title><![CDATA[Reply to Schnelles vertauschen von Bytes? on Sat, 19 Aug 2006 09:53:25 GMT]]></title><description><![CDATA[<p><a href="http://msdn2.microsoft.com/en-us/library/a3140177.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/a3140177.aspx</a> ... <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/1120165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120165</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 19 Aug 2006 09:53:25 GMT</pubDate></item></channel></rss>