<?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[Stilfrage zum arbeiten mit 64Bit Zahlen unter 32Bit]]></title><description><![CDATA[<p>Hallo. (32-Bit)-Windows gibt die Dateigröße als zwei Long-Variablen an. Welche Methode würdet ihr wählen, um diese in long long umzuwandeln?</p>
<pre><code class="language-cpp">//&quot;Bit gefrickel&quot;
unsigned long long get_size() const
{
    return (static_cast&lt;unsigned long long&gt;(wfd.nFileSizeLow) &amp; (static_cast&lt;unsigned long long&gt;(wfd.nFileSizeHigh)&lt;&lt;32u));
}

//Das Selbe mit Addition
unsigned long long get_size() const
{
    return (static_cast&lt;unsigned long long&gt;(wfd.nFileSizeLow) + (static_cast&lt;unsigned long long&gt;(wfd.nFileSizeHigh)&lt;&lt;32u));
}

//über pointer
unsigned long long get_size() const
{
    return *(reinterpret_cast&lt;const unsigned long long*&gt;(&amp;wfd.nFileSizeLow);
}

//über memcpy
unsigned long long get_size() const
{
    unsigned long long tmp;
    memcpy(tmp, wfd.nFileSizeLow, sizeof(unsigned long long);
    return tmp;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/253044/stilfrage-zum-arbeiten-mit-64bit-zahlen-unter-32bit</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 02:57:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/253044.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Oct 2009 01:11:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Stilfrage zum arbeiten mit 64Bit Zahlen unter 32Bit on Wed, 28 Oct 2009 01:11:05 GMT]]></title><description><![CDATA[<p>Hallo. (32-Bit)-Windows gibt die Dateigröße als zwei Long-Variablen an. Welche Methode würdet ihr wählen, um diese in long long umzuwandeln?</p>
<pre><code class="language-cpp">//&quot;Bit gefrickel&quot;
unsigned long long get_size() const
{
    return (static_cast&lt;unsigned long long&gt;(wfd.nFileSizeLow) &amp; (static_cast&lt;unsigned long long&gt;(wfd.nFileSizeHigh)&lt;&lt;32u));
}

//Das Selbe mit Addition
unsigned long long get_size() const
{
    return (static_cast&lt;unsigned long long&gt;(wfd.nFileSizeLow) + (static_cast&lt;unsigned long long&gt;(wfd.nFileSizeHigh)&lt;&lt;32u));
}

//über pointer
unsigned long long get_size() const
{
    return *(reinterpret_cast&lt;const unsigned long long*&gt;(&amp;wfd.nFileSizeLow);
}

//über memcpy
unsigned long long get_size() const
{
    unsigned long long tmp;
    memcpy(tmp, wfd.nFileSizeLow, sizeof(unsigned long long);
    return tmp;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1799436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799436</guid><dc:creator><![CDATA[Stily]]></dc:creator><pubDate>Wed, 28 Oct 2009 01:11:05 GMT</pubDate></item><item><title><![CDATA[Reply to Stilfrage zum arbeiten mit 64Bit Zahlen unter 32Bit on Wed, 28 Oct 2009 01:29:29 GMT]]></title><description><![CDATA[<p>edit: im ersten Fall muss es natürlich ODER statt UND sein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799437</guid><dc:creator><![CDATA[Stily]]></dc:creator><pubDate>Wed, 28 Oct 2009 01:29:29 GMT</pubDate></item><item><title><![CDATA[Reply to Stilfrage zum arbeiten mit 64Bit Zahlen unter 32Bit on Wed, 28 Oct 2009 01:33:27 GMT]]></title><description><![CDATA[<p>Den 2. Fall.</p>
<p>Ich würde aber ein typedef benutzen, ala <code>typedef unsigned long long size64_t;</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799438</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Wed, 28 Oct 2009 01:33:27 GMT</pubDate></item><item><title><![CDATA[Reply to Stilfrage zum arbeiten mit 64Bit Zahlen unter 32Bit on Wed, 28 Oct 2009 01:38:50 GMT]]></title><description><![CDATA[<p>Ich hab's nichtmal ausgelagert.</p>
<pre><code class="language-cpp">UInt64 filesize=(UInt64(wfd.nFileSizeHigh)&lt;&lt;32)|wfd.nFileSizeLow;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1799439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799439</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 28 Oct 2009 01:38:50 GMT</pubDate></item><item><title><![CDATA[Reply to Stilfrage zum arbeiten mit 64Bit Zahlen unter 32Bit on Wed, 28 Oct 2009 01:41:44 GMT]]></title><description><![CDATA[<p>In der MSDN wird diese Methode vorgeschlagen</p>
<pre><code class="language-cpp">UInt64 filesize=((UInt64)nFileSizeHigh * ((UInt64)MAXDWORD+1)) + (UInt64)nFileSizeLow.
</code></pre>
<p>Was haltet ihr davon?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799440</guid><dc:creator><![CDATA[Stily]]></dc:creator><pubDate>Wed, 28 Oct 2009 01:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to Stilfrage zum arbeiten mit 64Bit Zahlen unter 32Bit on Wed, 28 Oct 2009 01:46:00 GMT]]></title><description><![CDATA[<p>Stily schrieb:</p>
<blockquote>
<p>In der MSDN wird diese Methode vorgeschlagen</p>
<pre><code class="language-cpp">UInt64 filesize=((UInt64)nFileSizeHigh * ((UInt64)MAXDWORD+1)) + (UInt64)nFileSizeLow.
</code></pre>
<p>Was haltet ihr davon?</p>
</blockquote>
<p>Das mag ich auch. Der Compiler wird schon bistshift und bitwise or draus machen. Allerdings ziehe ich die functional stype casts den c-cats vor, da hab ich irgendwie schneller Übersicht, was genau gecastst wird.</p>
<pre><code class="language-cpp">UInt64 filesize=(UInt64(nFileSizeHigh) * (UInt64(MAXDWORD)+1)) + UInt64(nFileSizeLow).
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1799441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799441</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 28 Oct 2009 01:46:00 GMT</pubDate></item><item><title><![CDATA[Reply to Stilfrage zum arbeiten mit 64Bit Zahlen unter 32Bit on Wed, 28 Oct 2009 02:34:06 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>: die Function-Style-Casts sind gleichbedeutend mit C-Style Casts. D.h. die können auch reinterpretieren (und const casten) - was ich nicht so toll finde. Noch schlimmer: da sie wie ein Ctor aussehen, wissen das viele Leute nicht, und vermuten, fälschlicherweise dass die Function-Style-Casts &quot;sicher&quot; sind (wie static_cast es wäre).</p>
<p>Warum nicht gleich static_cast?</p>
<p>@Stily:<br />
Die MSDN Variante ist IMO die beste, weil am besten/einfachsten verständlich. Und wie volkard schon sagte, wird jeder vernünftige Compiler im Release-Build nen Shift aus der Multiplikation machen, womit die MSDN Variante auch gleich schnell wie alles andere sein dürfte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799442</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 28 Oct 2009 02:34:06 GMT</pubDate></item><item><title><![CDATA[Reply to Stilfrage zum arbeiten mit 64Bit Zahlen unter 32Bit on Wed, 28 Oct 2009 11:21:54 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>: die Function-Style-Casts sind gleichbedeutend mit C-Style Casts. D.h. die können auch reinterpretieren (und const casten) - was ich nicht so toll finde.</p>
</blockquote>
<p>Ist in diesem Fall (und vielen anderen) völlig irrelevant, fürchte ich.</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Noch schlimmer: da sie wie ein Ctor aussehen, wissen das viele Leute nicht, und vermuten, fälschlicherweise dass die Function-Style-Casts &quot;sicher&quot; sind (wie static_cast es wäre).</p>
</blockquote>
<p>Naja, Du wirst einsehen, daß ich aus rein praktischen Erwägungen diesen cast nicht so oft mit Zeigern und Referenzen machen.</p>
<pre><code class="language-cpp">i=int*(p);//comiler lacht
</code></pre>
<p>Dieser Cast aber allein mit Objekten (nicht Zeigern/Referenzen) ausgeführt, verliert schon die Gefährlichkeit. Auch passiert er nicht bei Zuweisungszielen</p>
<pre><code class="language-cpp">char(i)=3;//compiler lacht
</code></pre>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Warum nicht gleich static_cast?</p>
</blockquote>
<p>Weil die Angst völlig übertrieben ist und weil ich mir ungefährlichen Code ungern mit Gefahrenschildern vollspamme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799567</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 28 Oct 2009 11:21:54 GMT</pubDate></item><item><title><![CDATA[Reply to Stilfrage zum arbeiten mit 64Bit Zahlen unter 32Bit on Wed, 28 Oct 2009 19:51:37 GMT]]></title><description><![CDATA[<p>volkard, schön langsam könntest du mir ruhig mal etwas mehr zutrauen. was du schreibst ist mir schon klar. was du vielleicht übersehen hast:</p>
<pre><code class="language-cpp">int i = 2;
	int* p = &amp;i;
	size_t j = size_t(p); // compiler schweigt, programmierer weint.
</code></pre>
<p>genauso wirst du vermutlich wissen, dass es in C++ sowas wie typedefs gibt.</p>
<pre><code class="language-cpp">PULONG p2 = PULONG(123); // compiler schweigt weiterhin, nichtmal ne warning...
</code></pre>
<blockquote>
<p>Weil die Angst völlig übertrieben ist und weil ich mir ungefährlichen Code ungern mit Gefahrenschildern vollspamme.</p>
</blockquote>
<p>es geht ja gerade darum, sich garnicht erst anzugewöhnen, bestimmte dinge zu schreiben, auch wenn man denkt es sei ungefährlich.<br />
gerüchteweise soll es nämlich vorkommen, dass menschen fehler machen. und dann denken die - gerüchteweise - auch mal etwas sei ungefährlich, was es garnicht ist.<br />
-&gt; der compiler schweigt, der programmierer weint</p>
<p>vollkommen unnötigerweise.</p>
<p>daher schreibe ich grundsätzlich nirgends mehr c-style casts, und auch keine function-style casts. die 13 zeichen mehr platz für einen static_cast sind doch wirklich kein problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799917</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 28 Oct 2009 19:51:37 GMT</pubDate></item></channel></rss>