<?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[double als Hex-Dump ausgeben]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte zu Debug-Zwecken einen double-Wert (64 bit float) als Hex ausgegeben bekommen.</p>
<p>Die naheliegenste Methode mit</p>
<pre><code class="language-cpp">sprintf(&quot;%x&quot;, meinedouble);
</code></pre>
<p>funktioniert leider nicht, da nur 32 Bit ausgegeben werden.</p>
<p>Wie bekomme ich das Ausgegeben?</p>
<p>Danke</p>
<p>Hintergrund:<br />
Ich habe ein Dateiformat, welches verschiedene NaN-Darstellung als inband-Signalisierung nutzt und diese muss ich mir selbst erstmal signalisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/143358/double-als-hex-dump-ausgeben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 12:00:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143358.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Apr 2006 14:48:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Fri, 07 Apr 2006 14:48:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte zu Debug-Zwecken einen double-Wert (64 bit float) als Hex ausgegeben bekommen.</p>
<p>Die naheliegenste Methode mit</p>
<pre><code class="language-cpp">sprintf(&quot;%x&quot;, meinedouble);
</code></pre>
<p>funktioniert leider nicht, da nur 32 Bit ausgegeben werden.</p>
<p>Wie bekomme ich das Ausgegeben?</p>
<p>Danke</p>
<p>Hintergrund:<br />
Ich habe ein Dateiformat, welches verschiedene NaN-Darstellung als inband-Signalisierung nutzt und diese muss ich mir selbst erstmal signalisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1032743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1032743</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Fri, 07 Apr 2006 14:48:28 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Fri, 07 Apr 2006 15:01:24 GMT]]></title><description><![CDATA[<p>Wie wär's mit nem reinterpretcast&lt;char*&gt;(&amp;deinDouble), dann haste nen pointer auf das Teil, der aber auf chars arbeitet. Mit Den Indizes 0 bis sieben kannste dann die einzelnen bytes ausgeben. Daß das nicht portabel ist brauche ich wohl nicht dazusagen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1032748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1032748</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Fri, 07 Apr 2006 15:01:24 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Fri, 07 Apr 2006 15:34:13 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;

struct BytePrinter
{
    BytePrinter( char c ) : m_c( c ) {}
    unsigned char m_c;
};
std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const BytePrinter&amp; bp )
{
    return out &lt;&lt; unsigned( bp.m_c );
}

int main()
{
    using namespace std;
    double d = 3.14;
    const char* p = reinterpret_cast&lt; const char* &gt;( &amp;d );
    copy( p, p + sizeof( double ), ostream_iterator&lt; BytePrinter &gt;( cout &lt;&lt; hex, &quot; &quot; ) );
    cout &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1032766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1032766</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 07 Apr 2006 15:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Mon, 10 Apr 2006 07:06:56 GMT]]></title><description><![CDATA[<p>Vielen Dank, auf diese Weise habe ich herausgefunden, dass mein gesuchter Wert:</p>
<pre><code>00 00 00 00 00 00 f8 7f
</code></pre>
<p>ist.<br />
Das ist <strong>+NAN</strong>.</p>
<p>Nun muss ich double-Variablen mit diesem Wert belegen, wie schafft man das?<br />
reinterprete_cast&lt;&gt;() und ein c-typecast von long unsigned int nach double hilft mir da nicht weiter.</p>
<p>Ich muss irgendwie direkt die Bits der Float-Variable verrücken.<br />
Über Pointer könnte man etwa so den Compilter austricksen:</p>
<pre><code class="language-cpp">double d;

unsigned long int* i;
i= (unsigned long int*) &amp;d;

(*i)= 0xf87f;
</code></pre>
<p>Trotzdem ist das ersten unschön und zweitens muss ich irgendwie sicherstellen, dass ich immer ein 64-Bit Integer habe.</p>
<p>PS: Über den Sinn der aktiven Ausnutzung von NaN-Werten müssen wir hier nicht streiten, ich muss diese leider in einem Datenformat auswerten und schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034253</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Mon, 10 Apr 2006 07:06:56 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Mon, 10 Apr 2006 07:11:25 GMT]]></title><description><![CDATA[<p>Wenn du direkt auf der Byte-Struktur hantieren willst, kommst du um solche Zeiger-Verknotungen wohl kaum herum. Aber vielleicht ist es für deine Zwecke einfacher, die Möglichkeiten des C++ Standards zu nutzen:</p>
<pre><code class="language-cpp">#include &lt;limits&gt;
double nan_val = std::numeric_limits&lt;double&gt;::quiet_nan();
</code></pre>
<p>(im Gegensatz zu deiner &quot;Spielerei&quot; ist das sogar portabel)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034255</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 10 Apr 2006 07:11:25 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Mon, 10 Apr 2006 13:37:54 GMT]]></title><description><![CDATA[<p>Vielen Dank für die schöne Lösung.<br />
Leider ist das in meinem Borland Builder 6 nicht implementiert:</p>
<pre><code class="language-cpp">//[...]
return std::numeric_limits&lt;double&gt;::quiet_NaN();
</code></pre>
<p>ergibt:</p>
<pre><code>Unresolved external '_STL::_D_qNaN'
</code></pre>
<p>Mich wundert sowieso, dass man dieses NaN verwendet und sogar darauf prüft, da NaN nie gleich NaN sein kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034529</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Mon, 10 Apr 2006 13:37:54 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Mon, 10 Apr 2006 13:51:31 GMT]]></title><description><![CDATA[<p>Kann ich nicht nachvollziehen. Ich habe auch den BCB6 und da funktioniert es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034543</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 10 Apr 2006 13:51:31 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Mon, 10 Apr 2006 14:12:31 GMT]]></title><description><![CDATA[<p>Was mache ich falsch?</p>
<p>Mein Linker-Fehler lässt sich auch reproduzieren, wenn man eine <strong>neue Consolen-Anwendung</strong> mit folgendem Inhalt erstellt:</p>
<pre><code class="language-cpp">#include &lt;limits&gt;

void main(void)
  {
  double d;
  d= std::numeric_limits&lt;double&gt;::quiet_NaN();
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1034564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034564</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Mon, 10 Apr 2006 14:12:31 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Mon, 10 Apr 2006 14:27:36 GMT]]></title><description><![CDATA[<p>NaN != nan (?)</p>
<p>Gross/Kleinschreibung des Helfers evtl. so wie angegeben übernehmen <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/1034575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034575</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 10 Apr 2006 14:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Mon, 10 Apr 2006 15:29:29 GMT]]></title><description><![CDATA[<p>lieber nicht. Die Funktion heißt nämlich so. <strong>quiet_NaN()</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034636</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 10 Apr 2006 15:29:29 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Mon, 10 Apr 2006 15:35:30 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9448">@markus.r</a><br />
Arbeitest du mit oder ohne dynamische RTL?<br />
Ohne scheint es zu gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034641</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 10 Apr 2006 15:35:30 GMT</pubDate></item><item><title><![CDATA[Reply to double als Hex-Dump ausgeben on Mon, 10 Apr 2006 15:43:15 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a></p>
<p>Genau das ist es: Schalte ich dynamisches RTL aus, funktioniert es.</p>
<p>Statisches Linken könnte sich auch bei der Softwareverteilung als nützlich erweisen.</p>
<p>Vielen Dank für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034644</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Mon, 10 Apr 2006 15:43:15 GMT</pubDate></item></channel></rss>