<?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[Einlesen von Hex aus String]]></title><description><![CDATA[<p>Hallo allerseits</p>
<p>Ich bastel gerade einen Hex Editor.<br />
So der Inhalt des Savegames wird in einem String gespeichert</p>
<p>Jetzt versuch ich eine bestimmte Zahl(Gesundheit), die falschrum ins Savegame geschrieben wird, einzulesen<br />
die Zahl ist 03E8 (1000), in Savegame steht also E803<br />
so das Stück Code.<br />
Ich hab die Zahl als String gespeichert und wollte ihn in einer MessageBox anzeigen, um zu schauen ob alles klappt</p>
<p>b = read(a+1);<br />
c = read(a);</p>
<p>sprintf(buffer, &quot;%x%x&quot;, b, c);</p>
<p>MessageBox(NULL,buffer,&quot;&quot;,NULL);</p>
<p>a ist die Position des &quot;03&quot; und a+1 von &quot;E8&quot;</p>
<p>jetzt zeigt es aber nicht an<br />
&quot;03E8&quot;<br />
sondern &quot;03FFFFFFFFFFFFFFFFFFFE8&quot; und das Programm stürzt (beim Beenden) ab und es kommt der Windoof Fehler<br />
&quot;Das Programm hat ein Problem festgestellt...&quot;<br />
und<br />
&quot;Fehler in Anwendung&quot;<br />
Die Anweisung ... verweist auf Speicher in &quot;0xFFFFFFFFFFFFFFFFFE8&quot; der Vorgang &quot;read&quot; konnte nicht auf dem Speicher ausgeführt werden.</p>
<p>Andere Werte einzulesen/zu schreiben funzt super<br />
Bitte um Hilfe <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/topic/149232/einlesen-von-hex-aus-string</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 05:27:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149232.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 Jun 2006 17:41:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einlesen von Hex aus String on Sat, 03 Jun 2006 17:41:19 GMT]]></title><description><![CDATA[<p>Hallo allerseits</p>
<p>Ich bastel gerade einen Hex Editor.<br />
So der Inhalt des Savegames wird in einem String gespeichert</p>
<p>Jetzt versuch ich eine bestimmte Zahl(Gesundheit), die falschrum ins Savegame geschrieben wird, einzulesen<br />
die Zahl ist 03E8 (1000), in Savegame steht also E803<br />
so das Stück Code.<br />
Ich hab die Zahl als String gespeichert und wollte ihn in einer MessageBox anzeigen, um zu schauen ob alles klappt</p>
<p>b = read(a+1);<br />
c = read(a);</p>
<p>sprintf(buffer, &quot;%x%x&quot;, b, c);</p>
<p>MessageBox(NULL,buffer,&quot;&quot;,NULL);</p>
<p>a ist die Position des &quot;03&quot; und a+1 von &quot;E8&quot;</p>
<p>jetzt zeigt es aber nicht an<br />
&quot;03E8&quot;<br />
sondern &quot;03FFFFFFFFFFFFFFFFFFFE8&quot; und das Programm stürzt (beim Beenden) ab und es kommt der Windoof Fehler<br />
&quot;Das Programm hat ein Problem festgestellt...&quot;<br />
und<br />
&quot;Fehler in Anwendung&quot;<br />
Die Anweisung ... verweist auf Speicher in &quot;0xFFFFFFFFFFFFFFFFFE8&quot; der Vorgang &quot;read&quot; konnte nicht auf dem Speicher ausgeführt werden.</p>
<p>Andere Werte einzulesen/zu schreiben funzt super<br />
Bitte um Hilfe <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/1070817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070817</guid><dc:creator><![CDATA[Fragnade]]></dc:creator><pubDate>Sat, 03 Jun 2006 17:41:19 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von Hex aus String on Sat, 03 Jun 2006 17:58:25 GMT]]></title><description><![CDATA[<p>Da schreibst wohl du an die falsche stelle und nicht windows ist doof.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070823</guid><dc:creator><![CDATA[rabbbarbär]]></dc:creator><pubDate>Sat, 03 Jun 2006 17:58:25 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von Hex aus String on Sat, 03 Jun 2006 18:03:25 GMT]]></title><description><![CDATA[<p>Warum? Wo solls denn sonst hin?<br />
Hat weder primär was mit MFC noch WinAPI zu tun, nix mit der Konsole, nix mit Spieleprogrammierung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070827</guid><dc:creator><![CDATA[Fragnade]]></dc:creator><pubDate>Sat, 03 Jun 2006 18:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von Hex aus String on Sat, 03 Jun 2006 19:34:32 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>rabbbarbär meint nicht das du im falschen Forum postest, sondern entweder deinen Wert in der Datei an der falschen Stelle suchst oder/und ein ganz anderes Speicherproblem hast. Was genau könenn wir aber mangels relevanten Quellcode nicht sagen. Tip : benutze deinen Debugger und geh Schritt für Schritt durch.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070878</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 03 Jun 2006 19:34:32 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von Hex aus String on Sat, 03 Jun 2006 19:42:09 GMT]]></title><description><![CDATA[<p>achso lol :p sorry<br />
Also die Fehlermeldung ist behoben</p>
<p>Er sagt aber immer noch statt E8 FFFFFFFE8<br />
Habs leicht umgeschrieben, dass keine anderen Funktionen verwendet werden<br />
außer get_string_pos, der sucht einfach den String &quot;NJONS&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Die Position stimmt, wenn ich mit nem Hex Editor nachschaue steht da auch der Wert E8 bzw. 03</p>
<p>int pos = get_string_pos(&quot;NJONS&quot;);<br />
pos -= 14;</p>
<p>char* buffer = new char[64];</p>
<p>int b;<br />
int c;</p>
<p>b = m_text[pos+1];<br />
c = m_text[pos];</p>
<p>sprintf(buffer, &quot;%x%x&quot;, b, c);</p>
<p>MessageBox(NULL,buffer,&quot;&quot;,NULL);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070886</guid><dc:creator><![CDATA[Fragnade]]></dc:creator><pubDate>Sat, 03 Jun 2006 19:42:09 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von Hex aus String on Sat, 03 Jun 2006 23:46:32 GMT]]></title><description><![CDATA[<p>char ist bei deinem compiler wohl vorzeichenbehaftet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070963</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 03 Jun 2006 23:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von Hex aus String on Sun, 04 Jun 2006 08:24:58 GMT]]></title><description><![CDATA[<p>Zur Erklärung:<br />
char(0xE8) ist, falls der Typ 8 Bit vorzeichenbehaftet ist (-128...+127), -24.<br />
Dh, in der folgenden Zeile:</p>
<pre><code class="language-cpp">c = m_text[pos];
</code></pre>
<p>wird c der Wert -24 zugewiesen. Es wird also nicht bitweise, sondern arithmetisch kopiert. Und -24 wird in einem 32 Bit int intern mit dem Wert 0xFFFFFFE8 gespeichert. Und genau das wird auch ausgegeben. Einfache Lösung des Problems <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> verwende unsigned Typen!</p>
<p>btw:</p>
<blockquote>
<p>a ist die Position des &quot;03&quot; und a+1 von &quot;E8&quot;</p>
</blockquote>
<p>Das dürfte unter Windows genau andersrum sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070998</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 04 Jun 2006 08:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von Hex aus String on Sun, 04 Jun 2006 10:08:29 GMT]]></title><description><![CDATA[<p>Vielen Dank funktioniert super</p>
<p>Neues Problem, genau anders rum<br />
Ich hab eine Zahl, muss sie zerlegen und anders rum im String speichern<br />
also z.B. 1512(0x05E8) wird eingegeben, dann muss es in 5 und E8 zerlegt und dann gespeichert werden als E805</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071039</guid><dc:creator><![CDATA[Fragnade]]></dc:creator><pubDate>Sun, 04 Jun 2006 10:08:29 GMT</pubDate></item><item><title><![CDATA[Reply to Einlesen von Hex aus String on Sun, 04 Jun 2006 11:02:47 GMT]]></title><description><![CDATA[<p>Ganz kann ich dir nicht folgen was du in welche Richtung umwandeln willst.<br />
Auf jeden Fall kannst du dir die ganze Byte-dreherei sparen.</p>
<pre><code class="language-cpp">#include &lt;sstream&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;iomanip&gt;

using namespace std;

int main() {
   short int si = 1512;

   cout &lt;&lt; &quot;writing &quot; &lt;&lt; si &lt;&lt; &quot; to file\n&quot;;

   ofstream fo(&quot;a.dat&quot;,ios::out | ios::binary );
   fo.write((char *)&amp; si, sizeof(si) );
   fo.close();

   ifstream fi(&quot;a.dat&quot;, ios::in | ios::binary );

   fi.read((char*)&amp;si, sizeof(si) );

   cout &lt;&lt; hex &lt;&lt; setfill('0') &lt;&lt; setw(4) &lt;&lt; si &lt;&lt; &quot; = &quot; &lt;&lt; dec &lt;&lt; si &lt;&lt; endl;
   fi.close();

   // oder umgekehrt von hex-string 

   stringstream str( &quot;05e9&quot; );

   cout &lt;&lt; &quot;writing &quot; &lt;&lt; str.str() &lt;&lt; &quot; to file\n&quot;;

   str &gt;&gt; hex &gt;&gt; si;

   fo.open(&quot;a.dat&quot;,ios::out | ios::binary );
   fo.write((char *)&amp; si, sizeof(si) );
   fo.close();

   fi.open(&quot;a.dat&quot;, ios::in | ios::binary );

   fi.read((char*)&amp;si, sizeof(si) );

   cout &lt;&lt; hex &lt;&lt; setfill('0') &lt;&lt; setw(4) &lt;&lt; si &lt;&lt; &quot; = &quot; &lt;&lt; dec &lt;&lt; si &lt;&lt; endl;
   fi.close();

   return 0;
}
</code></pre>
<p>Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071070</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 04 Jun 2006 11:02:47 GMT</pubDate></item></channel></rss>