<?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ärdaten?]]></title><description><![CDATA[<p>Hallo,</p>
<p>welchen Datentyp empfehlt ihr für Binärdaten (z.B. eine JPEG Datei) die ich über einen Netzwerkstream empfange?<br />
Ideen: char[], std::string, std::vector&lt;char&gt;, std::array, boost::buffer?</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277970/datentyp-für-binärdaten</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 15:31:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277970.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Nov 2010 12:10:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 12:10:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>welchen Datentyp empfehlt ihr für Binärdaten (z.B. eine JPEG Datei) die ich über einen Netzwerkstream empfange?<br />
Ideen: char[], std::string, std::vector&lt;char&gt;, std::array, boost::buffer?</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986661</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Sat, 27 Nov 2010 12:10:59 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 12:28:04 GMT]]></title><description><![CDATA[<p>Kommt drauf an. Ist die Länge der zu empfangenden Daten bekannt? Sind es grosse Mengen, musst du sie zwischenspeichern oder kannst du sie teilweise bearbeiten? Für was brauchst du sie (als Bits (boost::dynamic_bitset oder std::vector&lt;bool&gt;) oder als die von dir genannten Möglichkeiten mit chars)?</p>
<p>Das Beste wäre in einem so allgemeinen Fall, die Daten nicht im Zwischenspeicher zu halten, sondern gleich beim Empfangen zu bearbeiten. Aber für eine genauere Antwort benötigen wir mehr Informationen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986669</guid><dc:creator><![CDATA[stebti]]></dc:creator><pubDate>Sat, 27 Nov 2010 12:28:04 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 12:50:29 GMT]]></title><description><![CDATA[<p>stebti schrieb:</p>
<blockquote>
<p>Kommt drauf an. Ist die Länge der zu empfangenden Daten bekannt?</p>
</blockquote>
<p>Nein, ich habe nur eine maximal erlaubte Größe.</p>
<p>stebti schrieb:</p>
<blockquote>
<p>Sind es grosse Mengen, musst du sie zwischenspeichern oder kannst du sie teilweise bearbeiten?</p>
</blockquote>
<p>Im speziellen Fall programmiere ich gerade einen HTTP Bildupload, ergo wird es am Ende in eine Datei gespeichert. Da das HTTP Protokoll aber nicht gerade gut ist, kann ich den Stream nicht sofort in eine Datei schreiben sondern muss ständig gucken ob ich nicht die &quot;Boundary&quot; treffe und dann weiß ich erst wann die Datei zuende ist.</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986675</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Sat, 27 Nov 2010 12:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 12:56:12 GMT]]></title><description><![CDATA[<p>NewSoftzzz schrieb:</p>
<blockquote>
<p>ich [kann] den Stream nicht sofort in eine Datei schreiben sondern muss ständig gucken ob ich nicht die &quot;Boundary&quot; treffe und dann weiß ich erst wann die Datei zuende ist.</p>
</blockquote>
<p>Wie wäre es mit gucken→schreiben, ..., gucken→schreiben, gucken→Datei schliessen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986681</guid><dc:creator><![CDATA[stebti]]></dc:creator><pubDate>Sat, 27 Nov 2010 12:56:12 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 13:09:37 GMT]]></title><description><![CDATA[<p>stebti schrieb:</p>
<blockquote>
<p>Wie wäre es mit gucken→schreiben, ..., gucken→schreiben, gucken→Datei schliessen?</p>
</blockquote>
<p>Ja natürlich, aber fürs gucken, die Frage bleibt: Welcher Datentyp? <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>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986684</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Sat, 27 Nov 2010 13:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 13:30:07 GMT]]></title><description><![CDATA[<p>Als Datentyp empfiehlt sich alles was irgendwie mit Feld von char zu tun hat. Ich würde einen vector nehmen und ihn mit einer Anfangsgröße initialisieren. Bei Bedarf kann er im Nachhinein ohne Verlust der Daten vergrößert werden. Ob die Bilder dabei 10MB oder größer werden können spielt da keine wesentliche Rolle. Ich würde bei mehreren MB aber anfangen die Daten schon zwischendurch in eine Datei zu schreiben, wenn du sie dort haben willst.<br />
Das HTTP-Protokoll bietet dir übrigens die Größe im Header. Es ist also nicht notwendig irgendetwas auszutesten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986692</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Sat, 27 Nov 2010 13:30:07 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 13:39:01 GMT]]></title><description><![CDATA[<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Das HTTP-Protokoll bietet dir übrigens die Größe im Header. Es ist also nicht notwendig irgendetwas auszutesten.</p>
</blockquote>
<p>Offensichtlich kennst du dich nicht genug mit dem HTTP Protokoll aus. Siehe:<br />
<a href="http://www.faqs.org/rfcs/rfc1867.html" rel="nofollow">http://www.faqs.org/rfcs/rfc1867.html</a></p>
<p>@Datentyp: ich tendiere zu einem string. Spricht was dagegen?</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986697</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Sat, 27 Nov 2010 13:39:01 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 14:16:36 GMT]]></title><description><![CDATA[<p>Ich finde die Stelle nicht wo steht, dass die Inhaltslänge nicht angegeben wird? Auch sehe ich an den Boundary-Marken keinen Hinweis, ob es die Letzte Marke ist oder nicht. Ich denke die Größe wird schon drin sein, allein damit alle Daten vom Stream gelesen werden. Oder wer garantiert zum Beispiel, dass die Marke nicht in den Daten vorkommt? Wenn du die Daten alle in einen string liest, kannst du anschließend mit find() die Marken suchen und so den Text zerpflücken. Dabei sollte aber darauf geachtet werden, in Binär-Daten können grundsätzlich Nullen drin sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986712</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Sat, 27 Nov 2010 14:16:36 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 14:19:15 GMT]]></title><description><![CDATA[<p><code>char</code> würde ich für Zeichen nehmen. Für Zahlen/Bytes am besten <code>unsigned char</code> (oder <code>signed char</code> ), weil man da einen standardisierten Wertebereich hat. Wieso <code>std::string</code> , wenn man keinen String braucht?</p>
<p>Wenn du ein einfaches lineares Layout benötigst, könntest du es mit <code>std::vector&lt;unsigned char&gt;</code> versuchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986713</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 27 Nov 2010 14:19:15 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 14:19:40 GMT]]></title><description><![CDATA[<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Ich finde die Stelle nicht wo steht, dass die Inhaltslänge nicht angegeben wird?</p>
</blockquote>
<p>Die Inhaltslänge wird für den kompletten Content angegeben, der dann durch die boundaries erst mal in einzelne Elemente geteilt wird. Und diese Elemente haben wiederum einen Header aus Text und dann evtl. als eigenen Content Binärdaten, dessen Länge ist aber nicht angegeben.</p>
<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Auch sehe ich an den Boundary-Marken keinen Hinweis, ob es die Letzte Marke ist oder nicht.</p>
</blockquote>
<p>-- am Ende</p>
<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Oder wer garantiert zum Beispiel, dass die Marke nicht in den Daten vorkommt?</p>
</blockquote>
<p>Da muss sich der Client mittels Heuristiken drum kümmern. Kann aber schiefgehen.</p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986714</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Sat, 27 Nov 2010 14:19:40 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 15:21:55 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p><code>std::string</code> , wenn man keinen String braucht?</p>
</blockquote>
<p>Die Daten selber sind ja in einem String eingebettet. Ich hatte damit gehofft über die String Methoden einfach die Byte-Folge für die Boundarys finden zu können. Leider orientiert sich std::string aber auch am Null-Byte, was somit nicht geht. Am unkompliziertesten ist aber nach wie vor ein vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986735</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Sat, 27 Nov 2010 15:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 15:26:46 GMT]]></title><description><![CDATA[<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Leider orientiert sich std::string aber auch am Null-Byte, was somit nicht geht.</p>
</blockquote>
<p>Was zum...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986739</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Sat, 27 Nov 2010 15:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 15:41:46 GMT]]></title><description><![CDATA[<p>Teufel!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986742</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 27 Nov 2010 15:41:46 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 16:46:50 GMT]]></title><description><![CDATA[<p>NewSoftzzz schrieb:</p>
<blockquote>
<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Leider orientiert sich std::string aber auch am Null-Byte, was somit nicht geht.</p>
</blockquote>
<p>Was zum...?</p>
</blockquote>
<p>Sorry, war falsch. Allerdings würde ich mich vorher vergewissern, ob diese Eigenschaft gewährt ist, wenn es portabel sein soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986759</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Sat, 27 Nov 2010 16:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to Datentyp für Binärdaten? on Sat, 27 Nov 2010 16:57:38 GMT]]></title><description><![CDATA[<p>Grundsätzlich ist string aber keine gute Wahl. Es ist eben nicht garantiert, dass der Bereich, anders als bei vector, zusammenhängend im Speicher liegt.<br />
Ein vector&lt;unsigned char&gt; wäre wahrscheinlich das richtige. Du könntest ja auch jeweils die magic number auswerten, bei bekannten Formaten den Header einlesen und den vector gleich passend &quot;resizen&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986763</guid><dc:creator><![CDATA[Vicious Falcon]]></dc:creator><pubDate>Sat, 27 Nov 2010 16:57:38 GMT</pubDate></item></channel></rss>