<?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[unbestimmter bereich]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin mir nicht ganz sicher ob das hier richtig ist.</p>
<pre><code class="language-cpp">float Data=12.3;
unsigned char* bytes = reinterpret_cast&lt;unsigned char*&gt;(&amp;Data);
</code></pre>
<p>ich will aus einer float zahl einen 4 byte charfeld machen.</p>
<p>ich bin mir nicht ganz sicher ob ich jetzt mit bytes in einen unbestimmten bereich schreibe, oder ob über das reinterpret_cast ein speicherbereich zugeordnet wird.</p>
<p>Danke schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/235602/unbestimmter-bereich</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 04:07:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/235602.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Mar 2009 08:06:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 08:06:38 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin mir nicht ganz sicher ob das hier richtig ist.</p>
<pre><code class="language-cpp">float Data=12.3;
unsigned char* bytes = reinterpret_cast&lt;unsigned char*&gt;(&amp;Data);
</code></pre>
<p>ich will aus einer float zahl einen 4 byte charfeld machen.</p>
<p>ich bin mir nicht ganz sicher ob ich jetzt mit bytes in einen unbestimmten bereich schreibe, oder ob über das reinterpret_cast ein speicherbereich zugeordnet wird.</p>
<p>Danke schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673869</guid><dc:creator><![CDATA[JBOpael]]></dc:creator><pubDate>Wed, 04 Mar 2009 08:06:38 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 08:23:42 GMT]]></title><description><![CDATA[<p>Man <em>kann</em> das machen, aber das ist a)nicht portabel und b)kann man sich damit u.U. Probleme einfangen (Alignment). Das letztere ist bei gängigen Plattformen zwar <em>meistens</em> unproblematisch, aber trotzdem...<br />
Was genau willst Du denn damit erreichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673872</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 04 Mar 2009 08:23:42 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 08:57:01 GMT]]></title><description><![CDATA[<p>Das ganze ist um can-bus daten zu senden. dafür muss ich den float wert in unsigned char haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673887</guid><dc:creator><![CDATA[JBOpael]]></dc:creator><pubDate>Wed, 04 Mar 2009 08:57:01 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 09:00:17 GMT]]></title><description><![CDATA[<p>JBOpael schrieb:</p>
<blockquote>
<p>Das ganze ist um can-bus daten zu senden. dafür muss ich den float wert in unsigned char haben.</p>
</blockquote>
<p>Was für eine Plattform ist denn der Datenempfänger?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673890</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 04 Mar 2009 09:00:17 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 09:10:55 GMT]]></title><description><![CDATA[<p>JBOpael schrieb:</p>
<blockquote>
<p>ich bin mir nicht ganz sicher ob ich jetzt mit bytes in einen unbestimmten bereich schreibe, oder ob über das reinterpret_cast ein speicherbereich zugeordnet wird.</p>
</blockquote>
<p>Stimmt schon, du greifst auf den Bereich des floats zu. Wie groß das float ist, kannst du ja mit sizeof rausfinden, bzw mit <code>assert( sizeof(float) == X )</code> sicherstellen, dass es so groß ist, wie du annimmst. Hast Zugriff auf <code>bytes[0]</code> bis inklusive <code>bytes[sizeof(float)-1]</code> .<br />
Auf Inkompatibilitäten der float-Darstellungen zielt Tachyon ja schon ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673900</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 04 Mar 2009 09:10:55 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 09:54:18 GMT]]></title><description><![CDATA[<p>Der Empfänger der Daten ist ein Microcontroller. Die daten sende ich über eine Peak Systems pcan PCI karte.</p>
<p>Als Programierumgebung nutze ich Borland c++. Aber das ist ja unabhängig von der Entwicklungsumgebung.</p>
<p>sizeof(float) ist 4. soviel ich weiß ist das doch genormt, oder?</p>
<p>ich hab heraus gefunden das ich die daten genau so auf diese art umwandeln kann.</p>
<pre><code class="language-cpp">float test=12.5;
unsigned char wert[4];

memcpy(wert,&amp;test,4);
</code></pre>
<p>was jetzt schöner ist, ist mal dahingestellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673924</guid><dc:creator><![CDATA[JBOpael]]></dc:creator><pubDate>Wed, 04 Mar 2009 09:54:18 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 10:42:16 GMT]]></title><description><![CDATA[<p>JBOpael schrieb:</p>
<blockquote>
<p>sizeof(float) ist 4. soviel ich weiß ist das doch genormt, oder?</p>
</blockquote>
<p>Absolut nicht. Wir haben hier DSPs, da ist <code>sizeof(float)</code> 1. Und das ist völlig Standardkonform. Bei solchen Sachen musst Du aufpassen. Was passiert denn z.B. wenn Dein µC Big-Endian hat? Dann wird da ebenfalls nicht das rauskommen was Du erwartest.<br />
Wenn man Daten binär übertragen will muss man sich ziemlich viele Gedanken machen, wenn verschiedene Plattformen beteiligt sind. Alternativ könntest Du die Daten auch als ASCII-Stream verschicken. Da bist Du auf der sicheren Seite.</p>
<p>Diese Variante ist dem <code>reinterpret_cast</code> auf jeden Fall vorzuziehen:</p>
<pre><code class="language-cpp">float test=12.5;
unsigned char wert[sizeof(test)];

memcpy(wert,&amp;test,sizeof(test));
</code></pre>
<p><em><strong>Btw: Hat eigentlich jemand eine Idee, wie man die Endianess zur Compilezeit herausbekommen kann? Geht das überhaupt ohne irgendwelche defines?</strong></em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1673968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1673968</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 04 Mar 2009 10:42:16 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 11:20:27 GMT]]></title><description><![CDATA[<blockquote>
<p>Hat eigentlich jemand eine Idee, wie man die Endianess zur Compilezeit herausbekommen kann? Geht das überhaupt ohne irgendwelche defines?</p>
</blockquote>
<p>Ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674020</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 04 Mar 2009 11:20:27 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 11:23:18 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<blockquote>
<p>Hat eigentlich jemand eine Idee, wie man die Endianess zur Compilezeit herausbekommen kann? Geht das überhaupt ohne irgendwelche defines?</p>
</blockquote>
<p>Ja.</p>
</blockquote>
<p>Dann wäre es auch nett, wenn Du das mal erörtern könntest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674021</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 04 Mar 2009 11:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 11:26:49 GMT]]></title><description><![CDATA[<p><a href="http://google.de" rel="nofollow">google.de</a> =&gt; <a href="http://www.allegro.cc/forums/print-thread/592785" rel="nofollow">http://www.allegro.cc/forums/print-thread/592785</a> irgendwie in der Mitte und am Ende.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674026</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 04 Mar 2009 11:26:49 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 11:32:38 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p><a href="http://google.de" rel="nofollow">google.de</a> =&gt; <a href="http://www.allegro.cc/forums/print-thread/592785" rel="nofollow">http://www.allegro.cc/forums/print-thread/592785</a> irgendwie in der Mitte und am Ende.</p>
</blockquote>
<p>Ich sehe da keine Antwort auf die Frage...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674029</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 04 Mar 2009 11:32:38 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 12:13:11 GMT]]></title><description><![CDATA[<blockquote>
<p>However, why not write a mini program (along the lines of Thomas's) to run first and output either #define BIG_ENDIAN or #define LITTLE_ENDIAN to a .h file, then include that file in your main program. It would be easy to incorporate this into a makefile.</p>
</blockquote>
<p>Und nenne es dann nicht #define ... sondern const bool endian or whatever.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674059</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 04 Mar 2009 12:13:11 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 12:14:58 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<blockquote>
<p>However, why not write a mini program (along the lines of Thomas's) to run first and output either #define BIG_ENDIAN or #define LITTLE_ENDIAN to a .h file, then include that file in your main program. It would be easy to incorporate this into a makefile.</p>
</blockquote>
<p>Und nenne es dann nicht #define ... sondern const bool endian or whatever.</p>
</blockquote>
<p>Hmm, das ist zwar eine Möglichkeit, aber leider lässt sich das nicht in den Buildprozess meiner Firma integrieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674064</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 04 Mar 2009 12:14:58 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 12:19:14 GMT]]></title><description><![CDATA[<p>Naja, welche Vorteile ergeben sich denn, wenn du es zur Kompilezeit festellen kannst, anstatt einfach zur Laufzeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674072</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 04 Mar 2009 12:19:14 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 12:22:54 GMT]]></title><description><![CDATA[<p>Bei Sockets gibt's doch htonl und Weitere, so was ähnliches würde ich auch einfach machen (oder gleich htonl/... benutzen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674074</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 04 Mar 2009 12:22:54 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 12:24:43 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Naja, welche Vorteile ergeben sich denn, wenn du es zur Kompilezeit festellen kannst, anstatt einfach zur Laufzeit?</p>
</blockquote>
<p>Ich kann dann via Template-Metaprogrammierung Funktionen zum Konvertieren in ein portables Format und zurück festlegen.<br />
Am Ende würde ich dann z.B. nur noch <code>serialize</code> und <code>deSerialize</code> aufrufen. Die Vorarbeit (inklusive einiger Typprüfungen) könnte der Compiler erledigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674078</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 04 Mar 2009 12:24:43 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 12:39:29 GMT]]></title><description><![CDATA[<p>Dann musst du doch schauen, ob der Compiler dir einige defines liefert. C++ von Haus aus, als auch Templates erfahren nie was von der Endianess. Das ist systemspezifisch und ausserhalb der Reichweite von C++. Die vorgestellte Loesung ist auch die einzige, die mir einfaellt. Leider funktioniert sie nicht bei cross compiles. Hier ist was aehnliches: <a href="http://stackoverflow.com/questions/280162/is-there-a-way-to-do-a-c-style-compile-time-assertion-to-determine-machines-en" rel="nofollow">klick</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674089</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 04 Mar 2009 12:39:29 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 12:49:14 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Man <em>kann</em> das machen, aber das ist a)nicht portabel und b)kann man sich damit u.U. Probleme einfangen (Alignment). Das letztere ist bei gängigen Plattformen zwar <em>meistens</em> unproblematisch, aber trotzdem...<br />
Was genau willst Du denn damit erreichen?</p>
</blockquote>
<p>Alignment-Probleme kann man keine bekommen wenn man NACH char* castet. VON char* ist wieder ein anderes Thema...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674100</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 04 Mar 2009 12:49:14 GMT</pubDate></item><item><title><![CDATA[Reply to unbestimmter bereich on Wed, 04 Mar 2009 14:04:21 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Man <em>kann</em> das machen, aber das ist a)nicht portabel und b)kann man sich damit u.U. Probleme einfangen (Alignment). Das letztere ist bei gängigen Plattformen zwar <em>meistens</em> unproblematisch, aber trotzdem...<br />
Was genau willst Du denn damit erreichen?</p>
</blockquote>
<p>Alignment-Probleme kann man keine bekommen wenn man NACH char* castet. VON char* ist wieder ein anderes Thema...</p>
</blockquote>
<p>Naja, aber wenn man was serialisiert, muss man das typischerweise auch wieder deserialisieren.</p>
<p>knivil schrieb:</p>
<blockquote>
<p>Dann musst du doch schauen, ob der Compiler dir einige defines liefert. C++ von Haus aus, als auch Templates erfahren nie was von der Endianess. Das ist systemspezifisch und ausserhalb der Reichweite von C++. Die vorgestellte Loesung ist auch die einzige, die mir einfaellt. Leider funktioniert sie nicht bei cross compiles. Hier ist was aehnliches: <a href="http://stackoverflow.com/questions/280162/is-there-a-way-to-do-a-c-style-compile-time-assertion-to-determine-machines-en" rel="nofollow">klick</a></p>
</blockquote>
<p>Jo, anders geht es wohl nicht. Ich finde es aber schade, dass der Standard keine Möglichkeiten zum Checken der Endianess vorschreibt. Viele Dinge, die aus <code>numeric_limits&lt;&gt;</code> rauspurzeln sind ja auch Implementation Defined. Und man benötigt die Information ja auch schon öfters mal. Man schaue sich z.B. mal die ganzen Netzwerkprotokolle an...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1674101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1674101</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 04 Mar 2009 14:04:21 GMT</pubDate></item></channel></rss>