<?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[Konvertierung Frage]]></title><description><![CDATA[<p>Kurze Frage:</p>
<p>Sei B[4] eine Bytearray.<br />
Sei U ein unsigned __int32.</p>
<p>Liefern folgende 2 Ausdrücke stets das gleiche Ergebnis für U?</p>
<p>U=B[0]+(B[1]&lt;&lt;0x8)+(B[2]&lt;&lt;0x10)+(B[3]&lt;&lt;0x18);<br />
memcpy(&amp;U, &amp;B[0], 4);</p>
<p>Auch wenn ich es wie eine Aufgabe gestellt habe, ist es ein Problem auf das ich gerade selber gestoßen bin.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307030/konvertierung-frage</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 18:04:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307030.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Aug 2012 15:06:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konvertierung Frage on Tue, 14 Aug 2012 15:06:42 GMT]]></title><description><![CDATA[<p>Kurze Frage:</p>
<p>Sei B[4] eine Bytearray.<br />
Sei U ein unsigned __int32.</p>
<p>Liefern folgende 2 Ausdrücke stets das gleiche Ergebnis für U?</p>
<p>U=B[0]+(B[1]&lt;&lt;0x8)+(B[2]&lt;&lt;0x10)+(B[3]&lt;&lt;0x18);<br />
memcpy(&amp;U, &amp;B[0], 4);</p>
<p>Auch wenn ich es wie eine Aufgabe gestellt habe, ist es ein Problem auf das ich gerade selber gestoßen bin.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241849</guid><dc:creator><![CDATA[KnobelDran]]></dc:creator><pubDate>Tue, 14 Aug 2012 15:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Tue, 14 Aug 2012 15:21:30 GMT]]></title><description><![CDATA[<p>KnobelDran schrieb:</p>
<blockquote>
<p>Liefern folgende 2 Ausdrücke stets das gleiche Ergebnis für U?</p>
</blockquote>
<p>Unter welchen Voraussetzungen? Was ist B? Ist B vorzeichenbehaftet? Was ist der Wert von CHAR_BIT? Auf welchen Rechnern soll denn das gleiche Ergebnis rauskommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241854</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 14 Aug 2012 15:21:30 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Tue, 14 Aug 2012 15:28:54 GMT]]></title><description><![CDATA[<p>KnobelDran schrieb:</p>
<blockquote>
<p>Kurze Frage:</p>
<p>Sei B[4] eine Bytearray.<br />
Sei U ein unsigned __int32.</p>
<p>Liefern folgende 2 Ausdrücke stets das gleiche Ergebnis für U?</p>
<p>U=B[0]+(B[1]&lt;&lt;0x8)+(B[2]&lt;&lt;0x10)+(B[3]&lt;&lt;0x18);<br />
memcpy(&amp;U, &amp;B[0], 4);</p>
</blockquote>
<p>Das ist abhängig vom Prozessortyp.<br />
Dein Stichwort ist <a href="http://www.proggen.org/doku.php?id=theory:endian" rel="nofollow">Endianess</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241856</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Tue, 14 Aug 2012 15:28:54 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Tue, 14 Aug 2012 15:51:30 GMT]]></title><description><![CDATA[<p>Also B[i] ist jeweils unsigned char.<br />
CHAR_BIT... darf ich nicht annehmen das es stets 8 ist...<br />
Sollte natürlich auf jedem Rechner das Gleiche rauskommen.<br />
Ich hab 4 Bytes die ich in einen unsinged __int32 konvertieren möchte (Little Endian),<br />
kann ich mich darauf verlassen das es (so gut) wie immer Funktioniert?<br />
Bei mir liefert es zumindest in beiden Fällen dasselbe.<br />
Und wenn eines was &quot;falsches&quot; liefert, liefert das andere zwangsläufig auch das Gleiche &quot;falsche&quot;?</p>
<p>Ich möchte jetzt nicht auf 5% der Sonderfälle eingehen, aber auch nicht das es auf 50% der Rechner auf einmal mist baut. Sollte nur für Windows laufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241859</guid><dc:creator><![CDATA[KnobelDran]]></dc:creator><pubDate>Tue, 14 Aug 2012 15:51:30 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Tue, 14 Aug 2012 16:10:26 GMT]]></title><description><![CDATA[<p>KnobelDran schrieb:</p>
<blockquote>
<p>Ich möchte jetzt nicht auf 5% der Sonderfälle eingehen, aber auch nicht das es auf 50% der Rechner auf einmal mist baut. Sollte nur für Windows laufen.</p>
</blockquote>
<p>Windows 8 läuft doch auch auf ARM-CPUs, keine Ahnung, ob die Little oder BigEndian haben.<br />
Ansonsten ist das identisch auf Little-Endiansystemen. Schneller geht das ganze, wenn Du auf Zeiger von unsigned int castest (reinterpret_cast) und dann einfach einmal 32 Bit kopierst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241865</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Tue, 14 Aug 2012 16:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Wed, 15 Aug 2012 00:46:21 GMT]]></title><description><![CDATA[<p>Wie meinst du das mit dem reinterpret_cast?</p>
<p>ich hab jetzt die Beiden Versionen implementiert:</p>
<pre><code class="language-cpp">unsigned __int32 BytesToInt32(unsigned char B1, unsigned char B2, unsigned char B3, unsigned char B4) {
		return B1+(B2&lt;&lt;0x8)+(B3&lt;&lt;0x10)+(B4&lt;&lt;0x18);
	}

	unsigned __int32 BytesToInt32(const unsigned char* B) {
		unsigned __int32 retVal;
		memcpy(&amp;retVal, B, 4);
		return retVal;
	}
</code></pre>
<p>so?</p>
<pre><code class="language-cpp">unsigned __int32 BytesToInt32(unsigned char* B) {
		unsigned __int32 retVal;
		retVal = *reinterpret_cast&lt;unsigned __int32*&gt;(B);
		return retVal;
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2241930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241930</guid><dc:creator><![CDATA[KnobelDran]]></dc:creator><pubDate>Wed, 15 Aug 2012 00:46:21 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Wed, 15 Aug 2012 00:55:21 GMT]]></title><description><![CDATA[<p>Geht das hier?</p>
<pre><code class="language-cpp">unsigned __int32 BytesToInt32(const unsigned char* B) {
		return *(unsigned __int32*)(B);
	}
</code></pre>
<p>wird hier der Wert nochmal kopiert und zurückgegeben?<br />
hab es jetzt mit einem c-casts gemacht, weil ich mit reinterpret_cast das Const nicht wegbekomme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241931</guid><dc:creator><![CDATA[KnobelDran]]></dc:creator><pubDate>Wed, 15 Aug 2012 00:55:21 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Wed, 15 Aug 2012 06:51:10 GMT]]></title><description><![CDATA[<p>KnobelDran schrieb:</p>
<blockquote>
<p>Geht das hier?</p>
<pre><code class="language-cpp">unsigned __int32 BytesToInt32(const unsigned char* B) {
		return *(unsigned __int32*)(B);
	}
</code></pre>
</blockquote>
<p>Formal ist das undefiniertes Verhalten(C++11 3.10/10).<br />
Schau in's Handbuch Deines Compilers, ob das definiert ist. Stichwort ist &quot;Aliasing&quot; oder ganz allgemein &quot;Lvalues&quot;, bzw. &quot;Glvalues&quot;.</p>
<p>Und wenn Du schon in's Handbuch schaust, guck gleich nach, ob es nicht einen ordentlichen Datentyp statt dieses häßlichen <code>__int32</code> gibt. <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>Viel Erfolg,<br />
FW</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241944</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Wed, 15 Aug 2012 06:51:10 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Wed, 15 Aug 2012 08:49:17 GMT]]></title><description><![CDATA[<p>KnobelDran schrieb:</p>
<blockquote>
<p>Wie meinst du das mit dem reinterpret_cast?</p>
<p>so?</p>
<pre><code class="language-cpp">unsigned __int32 BytesToInt32(unsigned char* B) {
		unsigned __int32 retVal;
		retVal = *reinterpret_cast&lt;unsigned __int32*&gt;(B);
		return retVal;
	}
</code></pre>
</blockquote>
<p>Ja, sieht doch mehr oder weniger schick aus.</p>
<p>reinterpret_cast ist fast immer die Bankrotterklärung des Software-Designs, aber hier ist es eben schnell wie Schmitz Katze. Da darf man sich durchaus fragen lassen, ob man dafür nicht einen Zensurbalken über eine solche Funktion legen sollte und das akzeptiert. Und damit klar ist, dass hier schwarze Magie passiert, schreibst Du es ja auch in den Quellcode: &quot;reinterpret_cast&quot;.</p>
<p>KnobelDran schrieb:</p>
<blockquote>
<p>Geht das hier?</p>
<pre><code class="language-cpp">unsigned __int32 BytesToInt32(const unsigned char* B) {
		return *(unsigned __int32*)(B);
	}
</code></pre>
<p>wird hier der Wert nochmal kopiert und zurückgegeben?<br />
hab es jetzt mit einem c-casts gemacht, weil ich mit reinterpret_cast das Const nicht wegbekomme.</p>
</blockquote>
<p>Du kopierst, da spielt es keine Rolle, ob Du ein int const oder ein int liest. NEVER EVER solltest Du C-Casts verwenden. Man beachte, dass ich Dir zum Casten rate - was schon leicht grenzwertig ist, aber C-Casts gehen ohne guten Grund ÜBERHAUPT NICHT. In C++ gibt es keine guten Gründe mehr.</p>
<pre><code class="language-cpp">unsigned __int32 BytesToInt32(const unsigned char* B) {
		return *reinterpret_cast&lt; unsigned __int32 const *&gt;(B);
	}
</code></pre>
<p>Ansonsten könntest Du noch Unions verwenden.</p>
<pre><code class="language-cpp">union IntConverter
{
  char          charArray[4]
  unsigned int  intValue;
};

union IntConverter ic;

ic.charArray[0] = '1';
ic.charArray[1] = '2';
ic.charArray[2] = '3';
ic.charArray[3] = '4';

printf( &quot;intValue: %d\n&quot;, ic.intValue );
</code></pre>
<p>Schön ist was anderes, aber da ist eher die Frage, wieso Du char-Arrays nach int umwandelst. Und wenn die Aufgabe unschön ist, dann wird da auch keine schöner Quellcode draus.</p>
<p>Das Union bietet sich zum Beispiel an, wenn Du 4 Byte aus einer Datei einlädst und dafür einen char-Pointer brauchst, diese vier Byte aber in wirklichkeit eben ein int sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241972</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Wed, 15 Aug 2012 08:49:17 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Wed, 15 Aug 2012 09:41:08 GMT]]></title><description><![CDATA[<p>Hallo Xin,</p>
<p>laut C++ Standard aber undefiniertes Verhalten - es darf nur aus dem Union-Member gelesen werden, in dem zuletzt reingeschrieben wurde (auch wenn dieser Union-Cast überaus beliebt ist)!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241980</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Wed, 15 Aug 2012 09:41:08 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Wed, 15 Aug 2012 10:10:16 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Hallo Xin,</p>
<p>laut C++ Standard aber undefiniertes Verhalten - es darf nur aus dem Union-Member gelesen werden, in dem zuletzt reingeschrieben wurde (auch wenn dieser Union-Cast überaus beliebt ist)!</p>
</blockquote>
<p>Natürlich ist das Verhalten in C++ undefiniert, schon alleine weil das Integer von einer Motorola CPU anders geschrieben wird als von einem Intel oder es CPUs gibt, für die C-Compiler existieren, die aber eine Bytegröße von über 32 Bit haben, ergo ein int auch größer als 32 Bit ist.</p>
<p>Wie der Fragesteller schon sagte: Windows kompatibel und er möchte nicht auf 5% Sonderfälle eingehen. Dafür ist diese Lösung tragbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241995</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Wed, 15 Aug 2012 10:10:16 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Thu, 16 Aug 2012 00:04:45 GMT]]></title><description><![CDATA[<p>Xin schrieb:</p>
<blockquote>
<p>Das Union bietet sich zum Beispiel an, wenn Du 4 Byte aus einer Datei einlädst und dafür einen char-Pointer brauchst, diese vier Byte aber in wirklichkeit eben ein int sind.</p>
</blockquote>
<p>Genau das mache ich auch, ich habe eine Binärdatei vorliegen und weis das gewisse 4 Bytes eben ein unsigned int sind. Ich denke ich werde die reinterpret_cast&lt;..&gt;(..) Lösung nehmem, das mit dem union ist mir irgendwie suspekt. Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242280</guid><dc:creator><![CDATA[KnobelDran]]></dc:creator><pubDate>Thu, 16 Aug 2012 00:04:45 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Thu, 16 Aug 2012 06:44:57 GMT]]></title><description><![CDATA[<p>KnobelDran schrieb:</p>
<blockquote>
<p>Ich denke ich werde die reinterpret_cast&lt;..&gt;(..) Lösung nehmem, das mit dem union ist mir irgendwie suspekt.</p>
</blockquote>
<p>Sehe ich auch als die bessere Variante an (wenns denn not tut das so zu machen). UB bzw. Plattformspezifisch ist beides, allerdings sieht man beim reinterpret_cast sofort, dass da was ungewöhnliches passiert. Den wechselnden Zugriff auf verschiedene union-Elemente kann man schnell mal übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242295</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 16 Aug 2012 06:44:57 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Thu, 16 Aug 2012 07:30:41 GMT]]></title><description><![CDATA[<p>KnobelDran schrieb:</p>
<blockquote>
<p>Xin schrieb:</p>
<blockquote>
<p>Das Union bietet sich zum Beispiel an, wenn Du 4 Byte aus einer Datei einlädst und dafür einen char-Pointer brauchst, diese vier Byte aber in wirklichkeit eben ein int sind.</p>
</blockquote>
<p>Genau das mache ich auch, ich habe eine Binärdatei vorliegen und weis das gewisse 4 Bytes eben ein unsigned int sind. Ich denke ich werde die reinterpret_cast&lt;..&gt;(..) Lösung nehmem, das mit dem union ist mir irgendwie suspekt. Vielen Dank!</p>
</blockquote>
<p>Ich nehme diese Lösung in der Regel auch, bzw. ich habe eine Endian-Class, die sich in Abhängigkeit des Prozessortyps initialisiert. Der gebe ich mit, was ich für Daten lese (char/short/int...) und welche Endianess ich erwarte. Anschließend frage ich nur noch den Wert ab.<br />
Der Umgang ist also ähnlich mit dem Union.</p>
<p>Ein reinterpret_cast&lt;&gt; sollte Dir aber auch sehr suspekt sein.<br />
Du solltest also eventuell in einem Kommentar dokumentieren, was das soll, denn ein reinterpret_cast&lt;&gt; ist ein klarer Hinweis auf ein Problem, eine offenliegende Wunde in der Architektur. Der Kommentar wirkt da als Pflaster. <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/2242301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242301</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Thu, 16 Aug 2012 07:30:41 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Thu, 16 Aug 2012 08:40:14 GMT]]></title><description><![CDATA[<p>Warum liest dunicht direkt in den int ein, ala:</p>
<pre><code class="language-cpp">int i;
lies_nach(&amp;i, sizeof i);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2242323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242323</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Thu, 16 Aug 2012 08:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Thu, 16 Aug 2012 11:10:13 GMT]]></title><description><![CDATA[<p>Könnte ich, wenn du mir sagst welchen Vorteil das gegenüber der Funktion mit return hat und ich den Vorteil als solchen anerkenne :p .</p>
<p>Bei der Funktion hab ich die Möglichkeit den Wert sofort weiterzuverarbeiten.<br />
z.B.</p>
<pre><code class="language-cpp">std::cout&lt;&lt;BytesToInt32(someChars);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2242408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242408</guid><dc:creator><![CDATA[KnobelDran]]></dc:creator><pubDate>Thu, 16 Aug 2012 11:10:13 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Thu, 16 Aug 2012 11:17:46 GMT]]></title><description><![CDATA[<p>Einige Compiler bieten aber Unions als &quot;Workaround&quot; gegen die Strict-Aliasing rule an. (z.B. GCC <a href="http://gcc.gnu.org/bugs/#known" rel="nofollow">gcc.gnu.org/bugs/#known</a> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242413</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Thu, 16 Aug 2012 11:17:46 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Thu, 16 Aug 2012 12:11:29 GMT]]></title><description><![CDATA[<p>Also</p>
<pre><code class="language-cpp">uint32_t BytesToInt32(const uint8_t* B) {
    return B[0]+(B[1]&lt;&lt;0x8)+(B[2]&lt;&lt;0x10)+(B[3]&lt;&lt;0x18);
}
</code></pre>
<p>macht bereits das Richtige? Wieso werden dann memcpy oder absurde Casts überhaupt in Erwägung gezogen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242451</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 16 Aug 2012 12:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Thu, 16 Aug 2012 12:16:54 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Also</p>
<pre><code class="language-cpp">uint32_t BytesToInt32(const uint8_t* B) {
    return B[0]       // zugriff
            +         // addition
              (B[1]   // addition und zugriff
                &lt;&lt;    // shiften
               0x8)   
            +         // addition
             (B[2]    // addition und zugriff
                &lt;&lt;    // shiften
              0x10)
            +         // addition
             (B[3]    // addition und zugriff
               &lt;&lt;     // shift
              0x18);
}
</code></pre>
<p>macht bereits das Richtige? Wieso werden dann memcpy oder absurde Casts überhaupt in Erwägung gezogen?</p>
</blockquote>
<pre><code class="language-cpp">return *                          // Zugriff
         (unsigned __int32*)(B);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2242457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242457</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Thu, 16 Aug 2012 12:16:54 GMT</pubDate></item><item><title><![CDATA[Reply to Konvertierung Frage on Thu, 16 Aug 2012 12:18:15 GMT]]></title><description><![CDATA[<p>Xin schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>Also</p>
<pre><code class="language-cpp">uint32_t BytesToInt32(const uint8_t* B) {
    return B[0]       // zugriff
            +         // addition
              (B[1]   // addition und zugriff
                &lt;&lt;    // shiften
               0x8)   
            +         // addition
             (B[2]    // addition und zugriff
                &lt;&lt;    // shiften
              0x10)
            +         // addition
             (B[3]    // addition und zugriff
               &lt;&lt;     // shift
              0x18);
}
</code></pre>
<p>macht bereits das Richtige? Wieso werden dann memcpy oder absurde Casts überhaupt in Erwägung gezogen?</p>
</blockquote>
<pre><code class="language-cpp">return *                          // Zugriff
         (unsigned __int32*)(B);
</code></pre>
</blockquote>
<p>Ja, ich habe mir schon gedacht, dass es etwas mit Voodoo zu tun haben muss...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242460</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 16 Aug 2012 12:18:15 GMT</pubDate></item></channel></rss>