<?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[ein integer in zwei short teilen]]></title><description><![CDATA[<p>Hallo Zusammen!</p>
<p>Ich habe eine Funktion...</p>
<pre><code class="language-cpp">int getDLLVersion(void);
</code></pre>
<p>..die mir eine Vesionsnummer zurück gibt. Laut Dokumentation stehen in den &quot;höherwertigen 16 Bit die Hauptversion&quot; und und in den anderen 16 Bit die Unterversion.<br />
Bsp.: 0x00010003 bedeutet Version 1.03</p>
<p>Jetzt wollte ich die Version direkt in ein Struct speichern:</p>
<pre><code class="language-cpp">struct DLLVersion {
  short minor;
  short maior;
}
DLLVersion version;
version = getDLLVersion();
</code></pre>
<p>Leider geht das so nicht (was ich schon vor dem Kompilieren ahnte).<br />
Ich weiß jetzt nur leider nicht weiter. Ein Tipp wäre hilfreich. Wenn der Aufwand dafür zu groß ist, speichere ich die Version halt nur als int.</p>
<p>Danke für die Hilfe.<br />
Gerrit</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208642/ein-integer-in-zwei-short-teilen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 00:10:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208642.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 Mar 2008 16:24:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 16:24:40 GMT]]></title><description><![CDATA[<p>Hallo Zusammen!</p>
<p>Ich habe eine Funktion...</p>
<pre><code class="language-cpp">int getDLLVersion(void);
</code></pre>
<p>..die mir eine Vesionsnummer zurück gibt. Laut Dokumentation stehen in den &quot;höherwertigen 16 Bit die Hauptversion&quot; und und in den anderen 16 Bit die Unterversion.<br />
Bsp.: 0x00010003 bedeutet Version 1.03</p>
<p>Jetzt wollte ich die Version direkt in ein Struct speichern:</p>
<pre><code class="language-cpp">struct DLLVersion {
  short minor;
  short maior;
}
DLLVersion version;
version = getDLLVersion();
</code></pre>
<p>Leider geht das so nicht (was ich schon vor dem Kompilieren ahnte).<br />
Ich weiß jetzt nur leider nicht weiter. Ein Tipp wäre hilfreich. Wenn der Aufwand dafür zu groß ist, speichere ich die Version halt nur als int.</p>
<p>Danke für die Hilfe.<br />
Gerrit</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477912</guid><dc:creator><![CDATA[gerritgoetzen]]></dc:creator><pubDate>Thu, 20 Mar 2008 16:24:40 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 16:37:24 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class dll_version_t {

	private:

		unsigned short m_major;
		unsigned short m_minor;

	public:

		dll_version_t( ) : m_major( 0 ), m_minor( 0 ) { }
		dll_version_t( int dll_version ) : m_major( ( dll_version &gt;&gt; 16 ) &amp; 0x00ff ), m_minor( dll_version &amp; 0x00ff ) { }
		dll_version_t( unsigned short dll_version_major, unsigned short dll_version_minor ) : m_major( dll_version_major ), m_minor( dll_version_minor ) { }

		unsigned short get_major( ) { return m_major; }
		unsigned short get_minor( ) { return m_minor; }
};

/* ... */

dll_version_t version( getDLLVersion( ) );
</code></pre>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477918</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 20 Mar 2008 16:37:24 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 18:42:18 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort.<br />
Für mich ist besonders die Zeile interessant:</p>
<pre><code class="language-cpp">dll_version_t( int dll_version ) : m_major( ( dll_version &gt;&gt; 16 ) &amp; 0x00ff ), m_minor( dll_version &amp; 0x00ff ) { }
</code></pre>
<p>Binäre operationen sind also die Lösung meines Problems. Ich habe mich also mal im Netz schlau gemacht und frage mich nun, ob nicht hier:</p>
<pre><code class="language-cpp">...m_major( ( dll_version &gt;&gt; 16 ) &amp; 0x00ff )...
</code></pre>
<p>die UND-Operation überflüssig (redundant) ist, da &quot;&gt;&gt;&quot; doch automatisch mit 0 auffüllt. Mache ich einen Denkfehler oder ist das zur Sicherheit, weil die Compiler das unterschiedlich machen?</p>
<p>Noch viel wichtiger:<br />
Die gespeicherten werte sind ja dezimal. Die Versionsnummern sind aber Hexadezimal ausgedrückt.<br />
Was ich meine: Die Versionsnummer lautet z.B.: 3.92<br />
Mein major-Hex-Wert ist also 3<br />
mein minor-Hex-Wert ist 92<br />
In meinem Struct stehen aber ja Integerwerte also 3 und 146. Wie mache ich also eine Hex-92 zu einer Dec-92?<br />
Beim googlen bekomme ich immer nur Dec-Hex-Konverter, was mir ja nun nix bringt.</p>
<p>Danke nochmal.<br />
Gerrit</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477974</guid><dc:creator><![CDATA[gerritgoetzen]]></dc:creator><pubDate>Thu, 20 Mar 2008 18:42:18 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 18:45:10 GMT]]></title><description><![CDATA[<p>müsste es nicht 0xFFFF sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477976</guid><dc:creator><![CDATA[hmmmmmmmm]]></dc:creator><pubDate>Thu, 20 Mar 2008 18:45:10 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 19:09:36 GMT]]></title><description><![CDATA[<p>Nein. Ich glaub nicht.<br />
int &amp; 0xFFFF ist doch wieder das gleiche int.</p>
<p>Aber nach wie vor finde ich nicht heraus, wie ich aus der hex-92 eine int-92 machen kann. Es muss doch einfacher gehen als so (funktionieren tuts):</p>
<pre><code class="language-cpp">int ver = getDLLVersion();

		// dieser Umweg muss noch ersetzt werden
		int tmp;
		float bruch;

		MEDllVersion.major = ver &gt;&gt; 16;
		bruch = float(MEDllVersion.major)/16;
		tmp = int(floor(bruch));
		MEDllVersion.major = tmp*10 + (MEDllVersion.major - tmp*16);

		MEDllVersion.minor = ver &amp; 0x00FF;
		bruch = float(MEDllVersion.minor)/16;
		tmp = int(floor(bruch));
		MEDllVersion.minor = tmp*10 + (MEDllVersion.minor - tmp*16);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1477993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477993</guid><dc:creator><![CDATA[gerritgoetzen]]></dc:creator><pubDate>Thu, 20 Mar 2008 19:09:36 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 19:24:58 GMT]]></title><description><![CDATA[<p>das &quot;&amp; 0x00ff&quot; macht schon Sinn, schliesslich garantiert dir ja niemand, dass &quot;int&quot; genau 32 Bit gross ist. Auf einem 64-Bit-Betriebssystem ist ein int 64 Bit gross, und dann funktioniert dein Code ohne dem &quot;&amp;&quot; nicht mehr.</p>
<p>gerritgoetzen schrieb:</p>
<blockquote>
<p>Noch viel wichtiger:<br />
Die gespeicherten werte sind ja dezimal. Die Versionsnummern sind aber Hexadezimal ausgedrückt.<br />
Was ich meine: Die Versionsnummer lautet z.B.: 3.92<br />
Mein major-Hex-Wert ist also 3<br />
mein minor-Hex-Wert ist 92<br />
In meinem Struct stehen aber ja Integerwerte also 3 und 146. Wie mache ich also eine Hex-92 zu einer Dec-92?</p>
</blockquote>
<p>Bist du dir sicher dass dich das ueberhaupt interessiert?<br />
Falls ja, ein hex-to-dec ist relativ trivial:</p>
<pre><code class="language-cpp">int hex2dec(int hex)
{
  int dec = 0;
  while(hex &gt; 16)
  {
    dec = (dec * 16) + (hex % 16);
    hex /= 16;
  }
  return dec + hex;
}
</code></pre>
<p>(ohne Gewaehr)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478003</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Thu, 20 Mar 2008 19:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 19:21:23 GMT]]></title><description><![CDATA[<p>hmmmmmmmm schrieb:</p>
<blockquote>
<p>müsste es nicht 0xFFFF sein?</p>
</blockquote>
<p>Richtig!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478006</guid><dc:creator><![CDATA[-.-]]></dc:creator><pubDate>Thu, 20 Mar 2008 19:21:23 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 19:22:27 GMT]]></title><description><![CDATA[<p>Man muss da nichts umwandeln, alle Zahlen werden doch binär dargestellt. Ob dezimal oder hexadezimal ist doch nur eine Interpretationssache:</p>
<pre><code class="language-cpp">// zuerst dezimal:
std::cout &lt;&lt; version.get_major() &lt;&lt; '.' &lt;&lt; version.get_minor() &lt;&lt; std::endl;
// dann hexadezimal:
std::cout &lt;&lt; std::hex &lt;&lt; version.get_major() &lt;&lt; '.' &lt;&lt; std::hex versíon.get_minor() &lt;&lt; std::endl;
</code></pre>
<p>Ich würde aber den &lt;&lt;-Operator für die Klasse von Swordfisch überladen, wenn du die Version öfter mal ausgeben willst (zB in eine Datei). Machst du das nicht, sondern benutzt sie nur zum Vergleich mit anderen Versionen, ist das ganz ja vollkommen irrelevant, da 0x92 == 146 == 0222 == 10010010 (binär).</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478007</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Thu, 20 Mar 2008 19:22:27 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 19:34:30 GMT]]></title><description><![CDATA[<p>Mit dem &amp;0x00FF leuchtet mir jetzt ein. Danke.</p>
<p>Nun zum anderen Problem. Ich hab ja die Versionsnummern in meinem Struct drin. &quot;major&quot; und &quot;minor&quot; sind als &quot;short&quot; (also 16bit) dort drin.</p>
<pre><code class="language-cpp">typedef struct _DLL_VERSION
{
	unsigned short major;
	unsigned short minor;
} DLL_VERSION, *PDLL_VERSION;
</code></pre>
<p>Wenn ich nun so</p>
<pre><code class="language-cpp">DLL_VERSION version;
int ver = getDLLVersion();
version.major = (ver &gt;&gt; 16) &amp; 0x00FF;
version.minor = ver &amp; 0x00FF;
</code></pre>
<p>mein struct fülle, stehen dort folgende werte:<br />
major = 3 // Hex: 3<br />
minor = 146 // Hex: 92</p>
<p>Die Versionsnummer lautet aber nicht 3.146 sondern 3.92. Es geht nämlich um die Hex-Werte und nicht um die dezimalen (so ist es in der Dokumentation der Funktion erklärt). Ich möchte also folgendes speichern:<br />
major = 3<br />
minor = 92</p>
<p>Deshalb auch meine Umrechnung. Ich denke aber das das einfacher gehen muss. Funktionieren tuts ja. Ich hoffe ich habe mich nun verständlicher ausgedrückt.</p>
<p>Danke<br />
Gerrit</p>
<p>(jetzt wart Ihr schneller mit tippen :))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478013</guid><dc:creator><![CDATA[gerritgoetzen]]></dc:creator><pubDate>Thu, 20 Mar 2008 19:34:30 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 19:57:34 GMT]]></title><description><![CDATA[<p>prinzipiell ist das ja machbar,<br />
aber hast du dir mal überlegt, was passiert, wenn da mal statt 92 ein 9F steht oder so?<br />
wie willst du das dann einfach mal als Dezimalzahl werten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478030</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Thu, 20 Mar 2008 19:57:34 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 20:15:56 GMT]]></title><description><![CDATA[<p>Was du von <code>getDLLVersion( )</code> bekommst, sind einen Haufen bits. Nicht mehr und nicht weniger. Nachdem du den <code>int</code> in zwei <code>unsigned short</code> s aufgeteilt hast, hast du wieder einen Haufen bits. Wie Du die interpretierst, ist eine andere Geschichte.</p>
<p>Ist die DLL von Dir, oder bist du &quot;nur&quot; Benutzer? Wenn der Entwickler der DLL vorgibt, dass die Versionsnummern Hexadezimal zu verstehen sind, dann gib sie Hexadezimal aus und alles ist gut.</p>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478039</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 20 Mar 2008 20:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 20:17:09 GMT]]></title><description><![CDATA[<p>Eine Möglichkeit wäre auch noch ein Bitset:</p>
<pre><code class="language-cpp">struct dll_version_t
{
    unsigned major : 16;
    unsigned minor : 16;
};

dll_version_t version = *reinterpret_cast&lt;dll_version_t*&gt; (getDLLVersion ());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1478042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478042</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 20 Mar 2008 20:17:09 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 20:25:37 GMT]]></title><description><![CDATA[<p>Verdammt, ich bin immer noch viel zu C-lastig. *kopfgegentischplatteknallt* <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478050</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 20 Mar 2008 20:25:37 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 21:04:02 GMT]]></title><description><![CDATA[<p>wenn es sowieso/nur für windows ist, gibts zu diesem zweck die wunderschönen makros LOWORD und HIWORD.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478066</guid><dc:creator><![CDATA[winner]]></dc:creator><pubDate>Thu, 20 Mar 2008 21:04:02 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 21:17:21 GMT]]></title><description><![CDATA[<p>winner schrieb:</p>
<blockquote>
<p>[...] wunderschönen makros LOWORD und HIWORD.</p>
</blockquote>
<p>contradictio in adiecto <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>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478072</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 20 Mar 2008 21:17:21 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 21:58:05 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>contradictio in adiecto <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>
</blockquote>
<p>genau, ich wollte ja noch &quot;oxymoron&quot; als user hinschreiben <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/1478088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478088</guid><dc:creator><![CDATA[winner]]></dc:creator><pubDate>Thu, 20 Mar 2008 21:58:05 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 22:18:34 GMT]]></title><description><![CDATA[<p>am einfachsten wäre es mit einem short pointer.</p>
<pre><code class="language-cpp">short getUpper( long value )
{
    short * ptr = (short*) &amp;value;
    ++ptr;
    return *ptr;
}

short getLower( long value )
{
    short * ptr = (short*) &amp;value;
    return *ptr;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1478093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478093</guid><dc:creator><![CDATA[plongor]]></dc:creator><pubDate>Thu, 20 Mar 2008 22:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 22:33:31 GMT]]></title><description><![CDATA[<p>plongor schrieb:</p>
<blockquote>
<p>am einfachsten wäre es mit einem short pointer.</p>
</blockquote>
<p>Wohl eher am unsichersten. Was, wenn ein <code>short</code> 4 Bytes breit ist?</p>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478100</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 20 Mar 2008 22:33:31 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 22:48:46 GMT]]></title><description><![CDATA[<p>Gegenfrage, was ist wenn der Integer 33 Byte groß ist und gar nicht durch 2 teilbar ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478104</guid><dc:creator><![CDATA[plongor]]></dc:creator><pubDate>Thu, 20 Mar 2008 22:48:46 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Thu, 20 Mar 2008 23:02:25 GMT]]></title><description><![CDATA[<p>Sch***egal, denn:</p>
<p>gerritgoetzen schrieb:</p>
<blockquote>
<p>Laut Dokumentation stehen in den &quot;höherwertigen 16 Bit die Hauptversion&quot; und und in den anderen 16 Bit die Unterversion.</p>
</blockquote>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478116</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 20 Mar 2008 23:02:25 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Fri, 21 Mar 2008 10:39:22 GMT]]></title><description><![CDATA[<p>Ich meine eine Union wäre eine gute Lösung</p>
<pre><code class="language-cpp">union
{
unsigned int alles;
unsigned short hälfte[2];
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1478223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478223</guid><dc:creator><![CDATA[c++-er]]></dc:creator><pubDate>Fri, 21 Mar 2008 10:39:22 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Fri, 21 Mar 2008 10:41:22 GMT]]></title><description><![CDATA[<p>Ich meine eine Union wäre eine gute Lösung</p>
<pre><code class="language-cpp">union
{
unsigned int alles;
unsigned short hälfte[2];
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1478225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478225</guid><dc:creator><![CDATA[c++-er]]></dc:creator><pubDate>Fri, 21 Mar 2008 10:41:22 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Fri, 21 Mar 2008 12:46:50 GMT]]></title><description><![CDATA[<p>c++-er schrieb:</p>
<blockquote>
<p>Ich meine eine Union wäre eine gute Lösung</p>
</blockquote>
<p>Ist es aber nicht :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478293</guid><dc:creator><![CDATA[anti-union]]></dc:creator><pubDate>Fri, 21 Mar 2008 12:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Fri, 21 Mar 2008 13:17:05 GMT]]></title><description><![CDATA[<p>plongor schrieb:</p>
<blockquote>
<p>am einfachsten wäre es mit einem short pointer.</p>
<pre><code class="language-cpp">short getUpper( long value )
{
    short * ptr = (short*) &amp;value;
    ++ptr;
    return *ptr;
}

short getLower( long value )
{
    short * ptr = (short*) &amp;value;
    return *ptr;
}
</code></pre>
</blockquote>
<p>undefiniert</p>
<p>c++-er schrieb:</p>
<blockquote>
<p>Ich meine eine Union wäre eine gute Lösung</p>
<pre><code class="language-cpp">union
{
unsigned int alles;
unsigned short hälfte[2];
};
</code></pre>
</blockquote>
<p>ebenfalls undefiniert</p>
<p>Natürlich muss die Repräsentation beider Typen entsprechend zueinander passen (also short: 16bit ohne padding, int: 32bit ohne Padding) - aber beide Verfahren (die auf das Gleiche hinauslaufen) haben dennoch aus dem gleichen Grunde (3.10/15) undefiniertes Verhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478309</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 21 Mar 2008 13:17:05 GMT</pubDate></item><item><title><![CDATA[Reply to ein integer in zwei short teilen on Fri, 21 Mar 2008 13:44:05 GMT]]></title><description><![CDATA[<p>Könnte mal jemand einen FAQ Beitrag dazu schreiben warum das undefiniert ist? Ich sehe das nämlich ziemlich oft das eine Union für sowas missbraucht wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478319</guid><dc:creator><![CDATA[ff]]></dc:creator><pubDate>Fri, 21 Mar 2008 13:44:05 GMT</pubDate></item></channel></rss>