<?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[Daten Byteweise behandeln bzw. in anderen Datentyp umwandeln]]></title><description><![CDATA[<p>Moin,</p>
<p>Aktuell versuche ich mich daran, einen Server für ein Spiel zu schreiben. (Ein Kumpel von mir hat einen, jedoch sehr verbuggt und in Java) Das Protokoll für die Datenübermittelung habe ich soweit verstanden und das Grundgerüst steht.<br />
Jetzt stoße ich allerdings auf ein Problem:<br />
Das Protokoll arbeitet natürlich nicht mit Worten wie &quot;Bewege X nach Y&quot;. Daher stellt sich mir jetzt das Problem die empfangenen Daten aufzuteilen und in die neuen Datentypen zu übergeben.<br />
Hier mal ein Beispiel:<br />
Client Sendet: (uint)0x05(short)10(string)hi\0\0\0<br />
(Die Werte mal zur veranschaulichung mit Dateityp, ich bekomme natürlich nur 0x050xA00x780x790x000x000x00)</p>
<p>Wie bekomm ich jetzt die Werte in einzelne Variablen der Typen short und string?<br />
(string ist 5 Byte groß, short 2 Byte, uint ist der Header)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272284/daten-byteweise-behandeln-bzw-in-anderen-datentyp-umwandeln</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 00:09:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272284.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Aug 2010 02:21:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Daten Byteweise behandeln bzw. in anderen Datentyp umwandeln on Sat, 14 Aug 2010 02:21:29 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>Aktuell versuche ich mich daran, einen Server für ein Spiel zu schreiben. (Ein Kumpel von mir hat einen, jedoch sehr verbuggt und in Java) Das Protokoll für die Datenübermittelung habe ich soweit verstanden und das Grundgerüst steht.<br />
Jetzt stoße ich allerdings auf ein Problem:<br />
Das Protokoll arbeitet natürlich nicht mit Worten wie &quot;Bewege X nach Y&quot;. Daher stellt sich mir jetzt das Problem die empfangenen Daten aufzuteilen und in die neuen Datentypen zu übergeben.<br />
Hier mal ein Beispiel:<br />
Client Sendet: (uint)0x05(short)10(string)hi\0\0\0<br />
(Die Werte mal zur veranschaulichung mit Dateityp, ich bekomme natürlich nur 0x050xA00x780x790x000x000x00)</p>
<p>Wie bekomm ich jetzt die Werte in einzelne Variablen der Typen short und string?<br />
(string ist 5 Byte groß, short 2 Byte, uint ist der Header)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939859</guid><dc:creator><![CDATA[t0day]]></dc:creator><pubDate>Sat, 14 Aug 2010 02:21:29 GMT</pubDate></item><item><title><![CDATA[Reply to Daten Byteweise behandeln bzw. in anderen Datentyp umwandeln on Sat, 14 Aug 2010 03:15:28 GMT]]></title><description><![CDATA[<p>du machst eine struct mit deinen daten, also alle variablen, so wie sie kommen in der Reihenfolge in der struct. dann alloziierst du speicher in der größe einer struct. liest in den speicher (pointer evtl. nach (unsigned)char casten) die daten aus dem netzwerk ein. dann castest du den pointer zum pointer-typ der struct. und tada!</p>
<p>achtung: im compiler member alignment ausschalten, weil der compiler sonst deine Variablen auf 2/4/x-Byte grenzen ausrichtet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939862</guid><dc:creator><![CDATA[hansi-dernetzwerktroll]]></dc:creator><pubDate>Sat, 14 Aug 2010 03:15:28 GMT</pubDate></item><item><title><![CDATA[Reply to Daten Byteweise behandeln bzw. in anderen Datentyp umwandeln on Sat, 14 Aug 2010 03:17:41 GMT]]></title><description><![CDATA[<p><a href="http://de.wikipedia.org/wiki/Speicherausrichtung" rel="nofollow">http://de.wikipedia.org/wiki/Speicherausrichtung</a> falls dir member alignment nichts sagt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939863</guid><dc:creator><![CDATA[hansi-dernetzwerktroll]]></dc:creator><pubDate>Sat, 14 Aug 2010 03:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to Daten Byteweise behandeln bzw. in anderen Datentyp umwandeln on Sat, 14 Aug 2010 06:30:54 GMT]]></title><description><![CDATA[<p>hansi-dernetzwerktroll schrieb:</p>
<blockquote>
<p>du machst eine struct mit deinen daten, also alle variablen, so wie sie kommen in der Reihenfolge in der struct. dann alloziierst du speicher in der größe einer struct. liest in den speicher (pointer evtl. nach (unsigned)char casten) die daten aus dem netzwerk ein. dann castest du den pointer zum pointer-typ der struct. und tada!</p>
<p>achtung: im compiler member alignment ausschalten, weil der compiler sonst deine Variablen auf 2/4/x-Byte grenzen ausrichtet.</p>
</blockquote>
<p>das geht nur bei strings mit gleicher länge</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939871</guid><dc:creator><![CDATA[ne]]></dc:creator><pubDate>Sat, 14 Aug 2010 06:30:54 GMT</pubDate></item><item><title><![CDATA[Reply to Daten Byteweise behandeln bzw. in anderen Datentyp umwandeln on Sun, 15 Aug 2010 07:26:54 GMT]]></title><description><![CDATA[<p>Du könntest das wie folgt</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main(int argc, char* argv[])
{
   char data[] = {0x05, 0xA0, 0x78, 0x48, 0x69, 0x00, 0x00 };
   char* ptr = data;
   unsigned char zahl1;
   short zahl2;

   zahl1 = *reinterpret_cast&lt;unsigned char*&gt;(ptr);
   ptr += sizeof(zahl1);

   zahl2 = *reinterpret_cast&lt;short*&gt;(ptr);
   ptr += sizeof(zahl2);

   string str(ptr);
   ptr += str.size() + 1;  // das terminierende Nullzeichen nicht vergessen...

   cout&lt;&lt;&quot;Zahl1: &quot;&lt;&lt;static_cast&lt;int&gt;(zahl1)&lt;&lt;endl;
   cout&lt;&lt;&quot;Zahl2: &quot;&lt;&lt;zahl2&lt;&lt;endl;
   cout&lt;&lt;&quot;Str  : &quot;&lt;&lt; str&lt;&lt;endl;

}
</code></pre>
<p>lesen...</p>
<p>Analog sollte das auch für andere Datentypen funktionieren...</p>
<p><strong>Achtung</strong>: Du musst allerdings auf die Endianess achten!</p>
<p>Edit: Beispiel angepasst...<br />
Edit 2: Besser so? :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939904</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 15 Aug 2010 07:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to Daten Byteweise behandeln bzw. in anderen Datentyp umwandeln on Sat, 14 Aug 2010 15:30:50 GMT]]></title><description><![CDATA[<p>ProgChild schrieb:</p>
<blockquote>
<p><strong>Achtung</strong>: Du musst allerdings auf die Byte-Endianess achten!</p>
</blockquote>
<p>*Byte-*Order oder <em>Endianess</em>. Gemixt mag das nicht werden! <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/1940006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940006</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 14 Aug 2010 15:30:50 GMT</pubDate></item><item><title><![CDATA[Reply to Daten Byteweise behandeln bzw. in anderen Datentyp umwandeln on Sat, 14 Aug 2010 15:57:48 GMT]]></title><description><![CDATA[<p>ne schrieb:</p>
<blockquote>
<p>das geht nur bei strings mit gleicher länge</p>
</blockquote>
<p>du meist, wenn der die nutzdaten, variable länge haben? ich weiß nicht wie es performance mäßig aussieht, aber man könnte entweder das maximum alloziieren, und bis zu einem delimiter vom socket lesen, oder speicher dynamisch allozieren, nachdem, man die länge der nutzdaten vorher empfangen hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940021</guid><dc:creator><![CDATA[hansi-dernetzwerktroll]]></dc:creator><pubDate>Sat, 14 Aug 2010 15:57:48 GMT</pubDate></item></channel></rss>