<?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[String mit Hexadezimalzahl in entsprechenden int umwandeln]]></title><description><![CDATA[<p>Hallo zusammen. Ich muss aus einem String der eine Hexadezimalzahl enthält einen Integer machen. Gibt es dafür eine &quot;Standardlösung&quot;? Wenn nicht, wie macht man so etwas möglicht elegant? Eventuell brauche ich das auch noch für Binärwerte.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/256032/string-mit-hexadezimalzahl-in-entsprechenden-int-umwandeln</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 16:51:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256032.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Dec 2009 13:10:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Mon, 07 Dec 2009 13:11:36 GMT]]></title><description><![CDATA[<p>Hallo zusammen. Ich muss aus einem String der eine Hexadezimalzahl enthält einen Integer machen. Gibt es dafür eine &quot;Standardlösung&quot;? Wenn nicht, wie macht man so etwas möglicht elegant? Eventuell brauche ich das auch noch für Binärwerte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819020</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Mon, 07 Dec 2009 13:11:36 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Mon, 07 Dec 2009 13:45:44 GMT]]></title><description><![CDATA[<p>Die Standardlösung ist die Verwendung eines Stringstreams:</p>
<pre><code class="language-cpp">std::stringstream(string_eingabe) &gt;&gt; std::hex &gt;&gt; int_ausgabe;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1819031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819031</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 07 Dec 2009 13:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Mon, 07 Dec 2009 14:00:59 GMT]]></title><description><![CDATA[<p>Vielen Dank! Das ist genau das, was ich brauche. Gibt es eine Möglichkeit zu überprüfen, ob der so erhaltene Datentyp den Wertebereich eines bestimmten datentyps überschreitet z.B. uint32_t?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819043</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Mon, 07 Dec 2009 14:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Mon, 07 Dec 2009 14:26:52 GMT]]></title><description><![CDATA[<p>siecpp schrieb:</p>
<blockquote>
<p>Vielen Dank! Das ist genau das, was ich brauche. Gibt es eine Möglichkeit zu überprüfen, ob der so erhaltene Datentyp den Wertebereich eines bestimmten datentyps überschreitet z.B. uint32_t?</p>
</blockquote>
<p>Da gibt es sogar zwei Methoden die mir einfallen:</p>
<ol>
<li>Du kannst, bei Typen wo das passt, einfach die Stellen im Ursprungsstring zählen. Zum Beispiel entsprechen die 32 Bit von uint_32_t exakt 8 Hexadezimalstellen. Geht natürlich nicht so einfach bei einem int_32_t, der 31 Bit plus Vorzeichenbit hat.</li>
<li>Wenn die Umwandlung fehlschlägt (zum Beispiel weil der Typ der die Daten aufnehmen soll zu klein ist), dann wird das failbit des stringstreams gesetzt.</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/1819053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819053</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 07 Dec 2009 14:26:52 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 08:38:28 GMT]]></title><description><![CDATA[<p>OK das funktioniert schon recht gut. Vielen Dank! Jetzt bräuchte ich das ganze auch noch für binär, wobei es da offenbar keine Standardlösung gibt. Eine überlaufprüfung hätte ich aber schon gerne, und da ich eine Konvertierfunktion als template schreiben möchte, kann ich leider nicht einfach die Stellen zählen, da nicht von vornerein feststeht, wie groß der Datentyp ist. Hat da jemand ne Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819407</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 08:38:28 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 09:16:30 GMT]]></title><description><![CDATA[<p>geht vielleicht so etwas:</p>
<pre><code class="language-cpp">if(value.length() &gt; sizeof(T)*8)
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819415</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 09:16:30 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 11:04:31 GMT]]></title><description><![CDATA[<p>In limits sind Compilezeitkonstanten für die Größe der verschiedenen Datentypen definiert, die als Templateargumente verwendet werden können.</p>
<p>Zur Umwandlung vom Binärsystem: Informier dich mal, was ein Stellenwertsystem ist und wie es funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819465</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 08 Dec 2009 11:04:31 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 11:33:53 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>In limits sind Compilezeitkonstanten für die Größe der verschiedenen Datentypen definiert, die als Templateargumente verwendet werden können.</p>
<p>Zur Umwandlung vom Binärsystem: Informier dich mal, was ein Stellenwertsystem ist und wie es funktioniert.</p>
</blockquote>
<p>Was ein Stellenwertsystem ist habe ich im Studium ausreichend gelernt. Der Punkt ist, dass ich nicht weiss, wie genau Typumwandlungen in c bzw c++ funktionieren. Ich hatte gehofft, dass man in eine Variable irgendwie einzelne bits reinschieben kann und nur die anzahl der bits entscheident ist. Wenn ich noch berücksichtigen muss, wie das interpretiert wird z.B. ob der Typ vorzeichenbehaftet ist, und wie genau der dezimale Wertebereich ist, wird das schnell extrem kompliziert. Wichtig ist, das man jedes bit des Datentyps exakt so gesetzt wird, wie es angegeben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819491</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 11:33:53 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 12:23:30 GMT]]></title><description><![CDATA[<p>siecpp schrieb:</p>
<blockquote>
<p>Was ein Stellenwertsystem ist habe ich im Studium ausreichend gelernt. Der Punkt ist, dass ich nicht weiss, wie genau Typumwandlungen in c bzw c++ funktionieren. Ich hatte gehofft, dass man in eine Variable irgendwie einzelne bits reinschieben kann und nur die anzahl der bits entscheident ist. Wenn ich noch berücksichtigen muss, wie das interpretiert wird z.B. ob der Typ vorzeichenbehaftet ist, und wie genau der dezimale Wertebereich ist, wird das schnell extrem kompliziert. Wichtig ist, das man jedes bit des Datentyps exakt so gesetzt wird, wie es angegeben wird.</p>
</blockquote>
<p>Du hast falsche Vorstellungen von dieser Art Typumwandlungen. Es wird schlicht und einfach gerechnet. Keine Zauberei mit reinterpret_cast oder so. Für hexadezimal, dezimal und oktal gibt es schon vorgefertigte Lösungen, weil diese häufig vorkommen. Daten im Binärformat hat man nur sehr selten, deshalb musst du dir die Rechnung selber schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819521</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 08 Dec 2009 12:23:30 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 12:38:39 GMT]]></title><description><![CDATA[<p>Hmm OK. danke. Dann muss ich das wohl anders angehen. Ich werde mal mit unsigned Integern anfangen und dann weitersehen. Was passiert denn. wenn ich z.B. den wert einer 32 bit unsigned Variable in einer 32 bit signed Variablen speicher? Wird die dann gegebenenfalls abgeschnitten gerundet oder nur anders interpretiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819529</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 12:38:39 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 13:06:14 GMT]]></title><description><![CDATA[<p>Such einfach mal hier im Forum nach &quot;Binärzahl&quot; o.ä. - da findest du dutzende Beispiele für die Umwandlung und Darstellung einer Zahl im Binärsystem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819540</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Tue, 08 Dec 2009 13:06:14 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 13:07:49 GMT]]></title><description><![CDATA[<p>siecpp schrieb:</p>
<blockquote>
<p>Was passiert denn. wenn ich z.B. den wert einer 32 bit unsigned Variable in einer 32 bit signed Variablen speicher? Wird die dann gegebenenfalls abgeschnitten gerundet oder nur anders interpretiert?</p>
</blockquote>
<p>Wenn sie passt, passiert gar nichts. Wenn sie zu groß ist, dann hängt das Verhalten von der Compilerimplementierung ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819542</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 08 Dec 2009 13:07:49 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 13:16:08 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Wenn sie passt, passiert gar nichts. Wenn sie zu groß ist, dann hängt das Verhalten von der Compilerimplementierung ab.</p>
</blockquote>
<p>OK dass hatte ich befürchtet. Dann muss ich offenbar tatsächlich unterscheiden zwischen signed und unsigned Typen und die binärzahl jeweils unterschiedlich interpretieren. Es ist sehr schade, dass es in C und C++ nur über den Umweg dezimal geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819545</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 13:16:08 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 13:25:47 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Such einfach mal hier im Forum nach &quot;Binärzahl&quot; o.ä. - da findest du dutzende Beispiele für die Umwandlung und Darstellung einer Zahl im Binärsystem.</p>
</blockquote>
<p>Das hatte ich als erstes gemacht. Leider sind dort meist andere Anwendungen gemeint. Der einzigen Beitrag, der in etwa das beschreibt, was ich machen möchte ist dieser: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-237767-and-highlight-is-bin%E4r.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-237767-and-highlight-is-bin%E4r.html</a><br />
Leider hat der keine brauchbare Antwort bekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819548</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 13:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 13:29:38 GMT]]></title><description><![CDATA[<p>Vielleicht könntest du mal beschreiben, was du überhaupt machen willst. Aus deinen bisherigen Beschreibengen entnehme ich, dass du vermutlich daten die in unterschiedlichen Zahlensystemen gegeben sind parsen willst. Ist das korrekt?</p>
<p>Ich verstehe aber nicht, warum du dir selber solche Schwierigkeiten machst: Was soll denn deiner Meinung nach passieren, wenn eine Zahl zu groß für den Zieltyp ist? Was meinst du mit dem Umweg über Dezimal? Was ist deine GENAUE Problemstellung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819551</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 08 Dec 2009 13:29:38 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 13:47:36 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Vielleicht könntest du mal beschreiben, was du überhaupt machen willst. Aus deinen bisherigen Beschreibengen entnehme ich, dass du vermutlich daten die in unterschiedlichen Zahlensystemen gegeben sind parsen willst. Ist das korrekt?</p>
</blockquote>
<p>Ja.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Ich verstehe aber nicht, warum du dir selber solche Schwierigkeiten machst: Was soll denn deiner Meinung nach passieren, wenn eine Zahl zu groß für den Zieltyp ist? Was meinst du mit dem Umweg über Dezimal? Was ist deine GENAUE Problemstellung?</p>
</blockquote>
<p>OK da muss ich etwas ausholen: Ich schreibe eine Testsuit für Digitalmodule. Diese soll unter anderem Eingangswerte aus einer xml datei einlesen und sie an den entsprechenden Eingang anlegen. Auf der Softwareseite sind die Eingangstypen z.B. verschiedene Integertypen. Da die Eingänge auf Hardwareseite möglicherweise als Bitfelder, Flags etc interpretiert werden können, ist es wichtig, die einzelnen bits des Eingangs genau setzen zu können. Damit man sich als Benutzer keine Gedanken machen muss, wie z.B. die Dezimal oder Hexadezimaldarstellung des entsprechenden bitfeldes aussieht, dachte ich, eine Binärdarstellung wäre für diese Fälle optimal. Außerdem muss sichergestellt werden, dass die Eingabewerte korrekt verarbeitet werden. Falls da irgendwo etwas abgeschnitten oder gerundet wird gibt das Fehler, die sehr schwer zuzuordnen sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819563</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 13:47:36 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 15:12:47 GMT]]></title><description><![CDATA[<p>Gerade für Bitfelder bietet sich die Klasse std::bitset an...</p>
<p>Edit: hier noch ein Link aus diesem Forum zur Anwendung:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-112522.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-112522.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819599</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Tue, 08 Dec 2009 15:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 15:03:25 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Gerade für Bitfelder bietet sich die Klasse std::bitset an...</p>
</blockquote>
<p>Das sieht vielversprechend aus. Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819605</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 15:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 15:16:42 GMT]]></title><description><![CDATA[<p>Würde das so funktionieren?</p>
<pre><code class="language-cpp">else if(base == &quot;bin&quot;)
  {
  if (value.length() &gt; sizeof(T)*8)
    {
    std::string error=&quot;parser error: binary value to long for given type&quot;;
    throw error;
    }
  else
    {
    bitset&lt;sizeof(T)*8&gt; bits (value);
    return reinterpret_cast&lt;T&gt;(bits);
    }

  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1819615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819615</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 15:16:42 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 15:28:08 GMT]]></title><description><![CDATA[<p>Nein! Weisst du wofuer reinterpret_cast da ist? Hast du die Links angesehen? Und warum arbeitest du nicht mit std::bitset selbst anstelle deiner ints, shorts, ... ?</p>
<blockquote>
<p>Auf der Softwareseite sind die Eingangstypen z.B. verschiedene Integertypen.</p>
</blockquote>
<p>Wird Zeit, das zu ueberdenken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819617</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 08 Dec 2009 15:28:08 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 15:25:14 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Nein! Weisst du wofuer reinterpret_cast da ist?</p>
</blockquote>
<p>Wenn du so fragst offenbar nicht <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="😉"
    /> Ich dachte, dass sei das äquivalent zum c cast. Ich möchte einfach verhindern, dass der Compiler da irgendetwas umwandelt bzw uminterpretiert</p>
<p>knivil schrieb:</p>
<blockquote>
<p>Auch sollte Bitset deine ints und short ... etc. ersetzen und nicht nur zum Umwandeln dienen.</p>
</blockquote>
<p>Das ist leider nicht möglich. Dieser Bereich ist nicht meine Baustelle. Auch wäre das wenig sinvoll. da die eingangswerte in manchen Fällen durchaus als Zahl interpretiert werden sollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819623</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 15:25:14 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 15:29:33 GMT]]></title><description><![CDATA[<p>OK da steckt natürlich noch ein dummer denkfehler drin. Ich werde mir mal den link anschauen, den du nachträglich reineditiert hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819625</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 15:29:33 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 15:33:34 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Nein! Weisst du wofuer reinterpret_cast da ist? Hast du die Links angesehen? Und warum arbeitest du nicht mit std::bitset selbst anstelle deiner ints, shorts, ... ?</p>
</blockquote>
<p>Ist echt schwierig, sich auf eine Aussage von dir zu beziehen, wenn du sie ständig umschreibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819627</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 15:33:34 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 15:51:12 GMT]]></title><description><![CDATA[<blockquote>
<p>The reinterpret_cast operator changes one data type into another. It should be used to cast between incompatible pointer types.</p>
</blockquote>
<p>Manche Referenzen sagen, das er ausdruecklich nur fuer Pointer zu verwenden ist. Du kannst ihn nicht einfach auf ein Objekt anwenden, da du nicht weisst, wie der Compiler das Objekt organisiert, auch wenn du den Aufbau der Klasse kennst.</p>
<blockquote>
<p>bitset&lt;10&gt; myset(string(&quot;1001010111&quot;));<br />
int myint = myset.to_ulong();</p>
</blockquote>
<p>Ist doch ein tolles Beispiel.</p>
<blockquote>
<p>Das ist leider nicht möglich. Dieser Bereich ist nicht meine Baustelle. Auch wäre das wenig sinvoll. da die eingangswerte in manchen Fällen durchaus als Zahl interpretiert werden sollen.</p>
</blockquote>
<p>Vielleicht wird ein dezent vorgebrachter Vorschlag nicht gleich komplett abgeschmettert. Auch muss man sich ueberlegen, wie oft &quot;manchmal&quot; im konkreten Fall bedeutet. Falls man doch manchmal ein int braucht, ist die Umwandlung recht einfach. Passt das Bitset nicht in ein int, so wird automatisch eine Exception geworfen, die man fangen und behandeln kann. Da die Laenge aber durch einen Templateparameter festgelegt wird und du aber eine variable Laenge benoetigst (verschiedene Digitalmodule), kann man sich etwas aehnliches wie Bitset bauen, bei der man zur Laufzeit die Anzahl der Bits festlegen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819632</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 08 Dec 2009 15:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 16:02:00 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<blockquote>
<p>bitset&lt;10&gt; myset(string(&quot;1001010111&quot;));<br />
int myint = myset.to_ulong();</p>
</blockquote>
<p>Ist doch ein tolles Beispiel.</p>
</blockquote>
<p>Sicher, nachdem ich es gelesen habe ist mir auch einiges klar geworden.</p>
<p>knivil schrieb:</p>
<blockquote>
<p>Vielleicht wird ein dezent vorgebrachter Vorschlag nicht gleich komplett abgeschmettert. Auch muss man sich ueberlegen, wie oft &quot;manchmal&quot; im konkreten Fall bedeutet.</p>
</blockquote>
<p>Ich glaube das ist eher die Regel als die Ausnahme. Das Problem ist aber auch, dass die Hardwareseite gerade parallel entwickelt wird und da auch keiner sicher ist, was da alles kommt. Ich soll allerdings mal eben die eierlegende Wollmilchsau programieren die möglichst alle zukünftigen Testfälle abdeckt. Du hast mir aber die Augen geöffnet, dass ich da offenbar völlig falsch rangehe. Ich denke ich lasse erstmal den Binärteil weg bevor ich nicht ganz sicher bin, dass soetwas dringend gebrauch wird und halte nochmal Rücksprache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819643</guid><dc:creator><![CDATA[siecpp]]></dc:creator><pubDate>Tue, 08 Dec 2009 16:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to String mit Hexadezimalzahl in entsprechenden int umwandeln on Tue, 08 Dec 2009 16:24:46 GMT]]></title><description><![CDATA[<blockquote>
<p>bitset&lt;10&gt; myset(string(&quot;1001010111&quot;));<br />
int myint = myset.to_ulong();</p>
</blockquote>
<p>Man könnte (wenn man ganz sicher gehen will) ja auch so etwas machen:</p>
<pre><code class="language-cpp">bitset&lt;10&gt; myset(string(&quot;1001010111&quot;));
int my_int = my_awesome_cast&lt;int&gt;(myset.to_ulong());

// Dabei:

template&lt;typename T&gt; T my_awesome_cast(unsigned long input)
{
 if (input &lt; static_cast&lt;unsigned long&gt;(numeric_limits&lt;T&gt;.max())) return input;
 else 
 {
  // Fehlerbehandlung
 }
}
</code></pre>
<p>Das müsste funktionieren, da unsigned long der größte eingebaute Integertyp ist. Geht natürlich schief, falls man es mit eigenen, größeren Typen oder Fließkommazahlen versucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1819653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1819653</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 08 Dec 2009 16:24:46 GMT</pubDate></item></channel></rss>