<?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[Ansistring in Hexadecimal wandeln und in char Array speichern]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte in einem Editfeld eine Zahl schreiben und diese soll dann in Hexadecimal umgewandelt werden.<br />
Das Problem ist allerdings, dass die Hex Zahl für eine Funktion benötigt wird, die einen char erwartet.</p>
<p>Mein Problem ist nun :<br />
Ich habe ein Editfeld, dies liefert mir einen AnsiString, dort wird nur eine Decimalzahl eingetragen. Diese Decimalzahl muß in Hexformat umgewandelt werden und darf nur ein char sein.</p>
<p>AnsiString decZahl = Edit2-&gt;Text;</p>
<p>int fuenf = decZahl.ToInt();</p>
<p>HexwertByte6 = HexwertByte6.IntToHex(fuenf,1);</p>
<p>char senddata[3];</p>
<p>senddata[1]=0x02;<br />
senddata[2]= HexwertByte6; // Hier soll nun der Hexwert vom Edit2 Feld stehen</p>
<p>Gruß<br />
benny_1</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/81630/ansistring-in-hexadecimal-wandeln-und-in-char-array-speichern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 21:33:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/81630.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 Aug 2004 19:54:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Mon, 02 Aug 2004 19:54:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte in einem Editfeld eine Zahl schreiben und diese soll dann in Hexadecimal umgewandelt werden.<br />
Das Problem ist allerdings, dass die Hex Zahl für eine Funktion benötigt wird, die einen char erwartet.</p>
<p>Mein Problem ist nun :<br />
Ich habe ein Editfeld, dies liefert mir einen AnsiString, dort wird nur eine Decimalzahl eingetragen. Diese Decimalzahl muß in Hexformat umgewandelt werden und darf nur ein char sein.</p>
<p>AnsiString decZahl = Edit2-&gt;Text;</p>
<p>int fuenf = decZahl.ToInt();</p>
<p>HexwertByte6 = HexwertByte6.IntToHex(fuenf,1);</p>
<p>char senddata[3];</p>
<p>senddata[1]=0x02;<br />
senddata[2]= HexwertByte6; // Hier soll nun der Hexwert vom Edit2 Feld stehen</p>
<p>Gruß<br />
benny_1</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573749</guid><dc:creator><![CDATA[benny_1]]></dc:creator><pubDate>Mon, 02 Aug 2004 19:54:15 GMT</pubDate></item><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Mon, 02 Aug 2004 20:07:56 GMT]]></title><description><![CDATA[<p>Wie wäre es wenn du es einfach mit einer selbst geschriebenen Funktion castest?</p>
<p>zahl[1]=fuenf/16;<br />
bittemp1=fmod(fuenf,16);<br />
zahl[2]=zahl[1]/16;<br />
bittemp2=fmod(zahl[1],16);</p>
<p>if (bittemp1==16)<br />
char[2]='f';<br />
if (bittemp1==15)<br />
char[2]='e';<br />
if (bittemp1==14)<br />
char[2]='d';<br />
if (bittemp1==13)<br />
char[2]='c';<br />
if (bittemp1==11)<br />
char[2]='b';</p>
<p>usw. das gleiche für zahl[2] usw. und fertig.</p>
<p>PS. der Befehl heist int fuenf = IntToStr(Edit2-&gt;Text);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573769</guid><dc:creator><![CDATA[the_hero99]]></dc:creator><pubDate>Mon, 02 Aug 2004 20:07:56 GMT</pubDate></item><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Mon, 02 Aug 2004 20:24:19 GMT]]></title><description><![CDATA[<p>Mit printf kannste auf jeden fall eine Zahl in einen String bringen, den Rest bringste dann sicher auch noch hin.</p>
<pre><code>#include &quot;stdio.h&quot;

int sprintf(char *buffer, const char *format[, argument, ...]);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/573784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573784</guid><dc:creator><![CDATA[Bigwill]]></dc:creator><pubDate>Mon, 02 Aug 2004 20:24:19 GMT</pubDate></item><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Mon, 02 Aug 2004 20:49:47 GMT]]></title><description><![CDATA[<p>the_hero99 schrieb:</p>
<blockquote>
<p>PS. der Befehl heist int fuenf = IntToStr(Edit2-&gt;Text);</p>
</blockquote>
<p>Wieso? Die Verwendung von AnsiString::ToInt() oder AnsiString::ToIntDef(...) ist durchaus legitim.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6309">@benny_1</a>:<br />
Möchtest möchtest den hexadezimalen <em>Wert</em> eines Integer in einem char?</p>
<pre><code class="language-cpp">int zahl = Edit1-&gt;Text.ToInDef(0) // nur damit keine Exception geworfen wird...
// eventuell Werteüberprüfung &gt; -128  &amp;&amp; &lt; 128 
char hexzahl = (char) zahl;
</code></pre>
<p>Grüße Joe_M.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573816</guid><dc:creator><![CDATA[zufaulzumeinloggen]]></dc:creator><pubDate>Mon, 02 Aug 2004 20:49:47 GMT</pubDate></item><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Mon, 02 Aug 2004 21:04:55 GMT]]></title><description><![CDATA[<p>Hallo Joe_M,</p>
<p>dein Quellcode klappt ja einwandfrei. Jedoch nur bei Zahlen bis 31, ich möchte aber Zahlen bis 4096 verarbeiten können.<br />
Kannst du mir dabei weiterhelfen?</p>
<p>Gruß<br />
benny_1</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573828</guid><dc:creator><![CDATA[benny_1]]></dc:creator><pubDate>Mon, 02 Aug 2004 21:04:55 GMT</pubDate></item><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Mon, 02 Aug 2004 21:30:05 GMT]]></title><description><![CDATA[<p>zufaulzumeinloggen schrieb:</p>
<blockquote>
<p>the_hero99 schrieb:</p>
<blockquote>
<p>PS. der Befehl heist int fuenf = IntToStr(Edit2-&gt;Text);</p>
</blockquote>
<p>Wieso? Die Verwendung von AnsiString::ToInt() oder AnsiString::ToIntDef(...) ist durchaus legitim.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6309">@benny_1</a>:<br />
Möchtest möchtest den hexadezimalen <em>Wert</em> eines Integer in einem char?</p>
<pre><code class="language-cpp">int zahl = Edit1-&gt;Text.ToInDef(0) // nur damit keine Exception geworfen wird...
// eventuell Werteüberprüfung &gt; -128  &amp;&amp; &lt; 128 
char hexzahl = (char) zahl;
</code></pre>
<p>Grüße Joe_M.</p>
</blockquote>
<p>Also erstmal kriegste so ganz bestimmt kein int in ein char, falls du das doch schaffst biste mein großer Held. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Dann zweitens sollteste wenigsten kein char sondern unsigned char nehmen, dann klapps auch mit dem Nachbarn bzw mit dem Umwandeln.</p>
<p>@benny Mit unsigned char klappts bis von 0 bis 255 und du darfst dich nicht von der Anzeige beim Auswerten beirren lassen. Es zählt was in der Variable steckt, nicht was der Debugger dir anzeigt.</p>
<p>Aso und was ich fast vergessen hätte, wenn ich ne Gültigkeitsprüfung der Zahl mache, dann bestimmt nicht mit ToIntDef(0) an der Stelle, was ist den wenn der User mal wirklih ne Null eingibt bzw. keine Zahl?</p>
<p>P.S. @ benny - es gint auch noch IntToHex(,) wenn dir das sprintf nicht gefällt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573834</guid><dc:creator><![CDATA[Bigwill]]></dc:creator><pubDate>Mon, 02 Aug 2004 21:30:05 GMT</pubDate></item><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Tue, 03 Aug 2004 06:52:40 GMT]]></title><description><![CDATA[<p>benny_1 schrieb:</p>
<blockquote>
<p>ich möchte aber Zahlen bis 4096 verarbeiten können.</p>
</blockquote>
<p>benny_1, jetzt stiftet Deine ursprüngliche Frage etwas Verwirrung:</p>
<p>benny_1 schrieb:</p>
<blockquote>
<p>Diese Decimalzahl muß in Hexformat umgewandelt werden und darf nur ein char sein.</p>
</blockquote>
<p>Was genau meinst Du damit: Die Zahl soll in Form <em>eines</em> Zeichens dargestellt werden oder soll der Wertebereich der Zahl dem von char entsprechen (offenbar ja nicht) oder etwas ganz anderes ... ?</p>
<p>Bigwill schrieb:</p>
<blockquote>
<p>Also erstmal kriegste so ganz bestimmt kein int in ein char, falls du das doch schaffst biste mein großer Held.</p>
</blockquote>
<p>Wo ist das Problem?</p>
<p>Bigwill schrieb:</p>
<blockquote>
<p>Dann zweitens sollteste wenigsten kein char sondern unsigned char nehmen, dann klapps auch mit dem Nachbarn bzw mit dem Umwandeln.</p>
</blockquote>
<p>Warum? Worauf beziehst Du diese Aussage?</p>
<p>Bigwill schrieb:</p>
<blockquote>
<p>Aso und was ich fast vergessen hätte, wenn ich ne Gültigkeitsprüfung der Zahl mache, dann bestimmt nicht mit ToIntDef(0) an der Stelle, was ist den wenn der User mal wirklih ne Null eingibt bzw. keine Zahl?</p>
</blockquote>
<p>Tja, es passiert überhaupt nichts. Das ist ja auch der Sinn der Sache. In diesen Fällen wird eben der Vorgabewert 0 verwendet.<br />
Das ist doch nur <em>eine</em> Möglichkeit, die Eingabe zu überprüfen.<br />
Du kannst natürlich auch ToIntDef(-1234567) verwenden, wenn Du eine DAU-Meldung wie &quot;Achtung, 'Ägypten' ist keine gültige Zahl.&quot; ausgeben willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/573938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/573938</guid><dc:creator><![CDATA[dschensky]]></dc:creator><pubDate>Tue, 03 Aug 2004 06:52:40 GMT</pubDate></item><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Tue, 03 Aug 2004 13:58:49 GMT]]></title><description><![CDATA[<p>dschensky schrieb:</p>
<blockquote>
<p>Wo ist das Problem?</p>
</blockquote>
<p>Ich würde sagen im Wertebereich und entsprechend in der Größe. Ist aber net so schlimm, da hab ich extra ein Smilley hintergesetzt, weils ja ansich nix mit der Lösung zu tun hat. Da er ja augenscheinlich nur den Wertebereich des char aus dem int braucht.</p>
<p>dschensky schrieb:</p>
<blockquote>
<p>Warum? Worauf beziehst Du diese Aussage??</p>
</blockquote>
<p>Das beziehe ich auf seine Umwandlung. Er hat angegeben Wertbereichsprüfung wehen char &gt; -128 &amp;&amp; &lt; 128. So nun mach mal die Umwandlung mit einer -40. Was da in der Hex steht 0xD8 hat so ungefähr nix mit einer -40 als Hex zu tun, weil der halt so nur vom der obersten Bereichsgrenze 40 nach unten geht. Machst du das hingegen mit unsigned char von 0 - 255 dann stimmts. Da gibts nämlich keine -40;</p>
<p>dschensky schrieb:</p>
<blockquote>
<p>Tja, es passiert überhaupt nichts. Das ist ja auch der Sinn der Sache. In diesen Fällen wird eben der Vorgabewert 0 verwendet.</p>
</blockquote>
<p>Hab ich mich ein bissel falsch ausgedrückt. Wie willst du so unterscheiden ob der User nur eine 0 oder wirklich was falsches eingegeben hat. So jedenfalls nicht, darauf wollte ich aufmerksam machen. Sicher gibts da ne menge andere Möglichkeiten der Überprüfung und eine von den anderen, sollte man dann halt nutzen.</p>
<p>@benny also 4096 passt auch definitiv nicht in <strong>einen</strong> char</p>
]]></description><link>https://www.c-plusplus.net/forum/post/574371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/574371</guid><dc:creator><![CDATA[Bigwill]]></dc:creator><pubDate>Tue, 03 Aug 2004 13:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Wed, 04 Aug 2004 06:38:52 GMT]]></title><description><![CDATA[<p>Bigwill schrieb:</p>
<blockquote>
<p>... Umwandlung mit einer -40. Was da in der Hex steht 0xD8 hat so ungefähr nix mit einer -40 als Hex zu tun, weil der halt so nur vom der obersten Bereichsgrenze 40 nach unten geht. Machst du das hingegen mit unsigned char von 0 - 255 dann stimmts. Da gibts nämlich keine -40;</p>
</blockquote>
<p>Ach ja, dann probier das mal:</p>
<pre><code class="language-cpp">char ctest;
int itest = -40;
ctest = (char) itest;
int itest2 = (int) ctest;
if (itest2 == itest)
	ShowMessage(&quot;Identisch&quot;);
</code></pre>
<p>Und ja, in diesem Kontext ist der Vorgabewert 0 vielleicht nicht besonders sinnvoll. Aber es ging mir nur darum zu zeigen, wie man eine Exception vermeiden kann, sollte mal keine Zahl in das Edit getippt werden. Wie man eigentlich auch aus dem Kommentar in der betreffenden Zeile erkennen kann.</p>
<p>Um den <em>Wert</em> 4096 (0x1000) in einem char(-Array) abzubilden, mußt Du High- und Lowbyte vewenden, also zwei Byte (= zwei char). Um die <em>Zeichenfolge</em> 4096 darzustellen benötigst du 4 Byte. Bitte nicht vergessen, dass ein char abschließend immer noch ein \0 benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/574803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/574803</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Aug 2004 06:38:52 GMT</pubDate></item><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Wed, 04 Aug 2004 16:05:21 GMT]]></title><description><![CDATA[<p>Joe_M. schrieb:</p>
<blockquote>
<p>Ach ja, dann probier das mal:</p>
<pre><code class="language-cpp">char ctest;
int itest = -40;
ctest = (char) itest;
int itest2 = (int) ctest;
if (itest2 == itest)
	ShowMessage(&quot;Identisch&quot;);
</code></pre>
</blockquote>
<p>Super Beweisführung die du da hast. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Aber ich will deswegen keinen Streit vom Zaun brechen.<br />
Aber vielleicht kannste meinen Standpunkt am ehesten mit dem Taschenrechner von Windows nachvollziehen, die machen nämlich den gleichen, aus meiner Sicht, Quatsch.</p>
<p>Gib da mal dezimal -40 ein. Das nach hex wandeln. Ergebnis D8. Das zurück nach Dez. Ergebnis 216. Also ist 216 = -40 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> . Und genau das machst du wenn du eine (signed) char in eine unsigned Hex umwandelst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/575310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/575310</guid><dc:creator><![CDATA[Bigwill]]></dc:creator><pubDate>Wed, 04 Aug 2004 16:05:21 GMT</pubDate></item><item><title><![CDATA[Reply to Ansistring in Hexadecimal wandeln und in char Array speichern on Wed, 04 Aug 2004 17:25:36 GMT]]></title><description><![CDATA[<p>ja aber genau da kommt signed und unsigned ins Spiel. char kennt nun mal nur 256 'Zustände', <em>die</em> ändern sich ja nicht, nur die <em>Interpretation</em>...</p>
<p>Grüße</p>
<p>Joe_M.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/575355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/575355</guid><dc:creator><![CDATA[zufaulzumeinloggen]]></dc:creator><pubDate>Wed, 04 Aug 2004 17:25:36 GMT</pubDate></item></channel></rss>