<?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[Datentyp für Binärprotokoll]]></title><description><![CDATA[<p>Hallo C++ler,</p>
<p>ich möchte in C++ ein Netzwerk Protokoll implementieren, in dem unteranderem Bytes vorkommen, die keine Zuordnung in der ASCII Tabelle haben ('\0', '\a', ...)<br />
Da jedoch nicht feststeht wieviele Daten ankommen sollte dieser Datentyp am besten dynamisch wachsen (ich speichere immer 1024 Bytes in einem Bytearray zwischen und übergebe diese dann). Arrays sind ziemlich unpraktisch, weil sie bei Änderungen der Größe umkopiert werden müssen, Vectoren sind unpraktisch weil man bei ihnen nur auf einzelne Bytes Zugriff hat, strings sind nicht dafür gedacht, daher bieten sie keinen leichten Zugriff auf einzelne Bytes, und sind langsam (noch dazu bin ich mir ziemlich sicher bei meinem letzten Test gesehen zu haben, dass sie falsch mit nichtdarstellbaren Bytes umgehen)<br />
Ich hoffe ihr habt mich verstanden, und könnt mir sagen welcher Datentyp in diesem Fall angebracht wäre</p>
<p>mfg Pseudo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313893/datentyp-für-binärprotokoll</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 03:54:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313893.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Feb 2013 11:49:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datentyp für Binärprotokoll on Wed, 13 Feb 2013 11:49:57 GMT]]></title><description><![CDATA[<p>Hallo C++ler,</p>
<p>ich möchte in C++ ein Netzwerk Protokoll implementieren, in dem unteranderem Bytes vorkommen, die keine Zuordnung in der ASCII Tabelle haben ('\0', '\a', ...)<br />
Da jedoch nicht feststeht wieviele Daten ankommen sollte dieser Datentyp am besten dynamisch wachsen (ich speichere immer 1024 Bytes in einem Bytearray zwischen und übergebe diese dann). Arrays sind ziemlich unpraktisch, weil sie bei Änderungen der Größe umkopiert werden müssen, Vectoren sind unpraktisch weil man bei ihnen nur auf einzelne Bytes Zugriff hat, strings sind nicht dafür gedacht, daher bieten sie keinen leichten Zugriff auf einzelne Bytes, und sind langsam (noch dazu bin ich mir ziemlich sicher bei meinem letzten Test gesehen zu haben, dass sie falsch mit nichtdarstellbaren Bytes umgehen)<br />
Ich hoffe ihr habt mich verstanden, und könnt mir sagen welcher Datentyp in diesem Fall angebracht wäre</p>
<p>mfg Pseudo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298566</guid><dc:creator><![CDATA[Pseudo]]></dc:creator><pubDate>Wed, 13 Feb 2013 11:49:57 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärprotokoll on Wed, 13 Feb 2013 11:56:15 GMT]]></title><description><![CDATA[<blockquote>
<p>Vectoren sind unpraktisch weil man bei ihnen nur auf einzelne Bytes Zugriff hat</p>
</blockquote>
<p>Bitte was? Wie genau meinst du das? std::vector&lt;T&gt; ist fast das gleiche wie ein unique_ptr&lt;T[]&gt;..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298568</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 13 Feb 2013 11:56:15 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärprotokoll on Wed, 13 Feb 2013 11:59:05 GMT]]></title><description><![CDATA[<p>Also eine unbekannte Menge unbekannter Daten? <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="➡"
    /> vector&lt;unsigned char&gt;</p>
<p>edit: Das Vorzeichen legen wir der Form halber besser auch noch fest. Ob signed oder unsigned ist dabei egal, Hauptsache einheitlich über alle Maschinen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298569</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 13 Feb 2013 11:59:05 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärprotokoll on Wed, 13 Feb 2013 12:01:27 GMT]]></title><description><![CDATA[<p>Ich meine das ich (nach meinen Versuchen) nur auf einzelne Bytes Zugriff habe, und nicht sagen kann: schreib mir vom Vector ab Feld 43 genau 14 Bytes in dieses Char Arrray. Es gibt also keine Methode mit der ich mehrere Bytes kopieren kann. Ich habe grade noch einen interessanten Datentyp gefunden: stringstream<br />
Der enthält zumindest die nötigen Funktionen, arbeitet aber leider mit strings, gibt es irgendeine stream Klasse/Template das für Bytes geeignet ist?</p>
<p>mfg Pseudo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298571</guid><dc:creator><![CDATA[Pseudo]]></dc:creator><pubDate>Wed, 13 Feb 2013 12:01:27 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärprotokoll on Wed, 13 Feb 2013 12:04:19 GMT]]></title><description><![CDATA[<p>Mal</p>
<pre><code>std::vector&lt;char&gt; v(1000 /* size */);
memcpy(&amp;v[42], 14, ...);
</code></pre>
<p>versucht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298573</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 13 Feb 2013 12:04:19 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärprotokoll on Wed, 13 Feb 2013 12:14:09 GMT]]></title><description><![CDATA[<p>Also bei folgendem Beispiel sagt mir der Debugger, dass in 0 und 1 Nullen sind (richtig) aber danach kommen nurnoch 'H' und 'a'...</p>
<pre><code>int _tmain(int argc, _TCHAR* argv[])
{
	char* Test1 = &quot;\0\0Hallo Welt!&quot;;
	std::vector&lt;unsigned char&gt; v(1000);

	char* Test2;
	Test2 = new char[1000];

	memcpy(&amp;v[0],  &amp;Test1[0], sizeof(Test1) / sizeof(Test1[0]));

	memcpy(&amp;Test2[0], &amp;v[0], sizeof(Test1) / sizeof(Test1[0]));

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2298578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298578</guid><dc:creator><![CDATA[Pseudo]]></dc:creator><pubDate>Wed, 13 Feb 2013 12:14:09 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärprotokoll on Wed, 13 Feb 2013 12:20:21 GMT]]></title><description><![CDATA[<pre><code>char* Test1
// ...
sizeof(Test1)  // wie viel ist das wohl?
</code></pre>
<p>Wenn du mit solchen Sachen schon Schwierigkeiten hast, ist das eigentlich ein sehr, sehr guter Grund, von Pointerfrickelei vorerst Abschied zu nehmen und sauber mit STL-Containern zu arbeiten.</p>
<p>P.S.: Wie wäre es mit std::copy? Damit wäre das auch nicht passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298580</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 13 Feb 2013 12:20:21 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärprotokoll on Wed, 13 Feb 2013 12:20:45 GMT]]></title><description><![CDATA[<p>Dann prüf doch mal, was da<br />
sizeof(Test1)<br />
wohl bei rauskommmt ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298581</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 13 Feb 2013 12:20:45 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärprotokoll on Wed, 13 Feb 2013 12:26:41 GMT]]></title><description><![CDATA[<p>Wenn man in letzter Zeit zuviel Delphi programmiert hat denkt man da hält nich immer dran <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="😃"
    /><br />
Oh Gott ist das ein peinlicher Fehler, sizeof gibt natürlich die Größe des Pointers zurück (unter Win32 4 Bytes)</p>
<p>Okay, Sorry</p>
<p>Ich glaub des Problem is gelöst<br />
Danke <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2298586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298586</guid><dc:creator><![CDATA[Pseudo]]></dc:creator><pubDate>Wed, 13 Feb 2013 12:26:41 GMT</pubDate></item></channel></rss>