<?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[Binären Buffer kopieren?]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>wie kopiert man unter C++ einen binären Buffer?</p>
<pre><code class="language-cpp">void Aes::SetAesKeyBin(int ByteLength, const char *cAesKeyBin) {
	char *m_cAesKeyBin=0;

	m_cAesKeyBin = new char[ByteLength];
	m_cAesKeyBin = cAesKeyBin; // Wie kopiert man n Zeichen von einem Buffer zum anderen?
}
</code></pre>
<p>Die C-String Funktionen kann ich nicht nehmen, weil im Binärstring eine \0 sein könnte. Aus der Winapi wollte ich mich auch nicht unbedingt bedienen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189464/binären-buffer-kopieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 09:26:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189464.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Aug 2007 11:10:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binären Buffer kopieren? on Mon, 13 Aug 2007 11:10:42 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>wie kopiert man unter C++ einen binären Buffer?</p>
<pre><code class="language-cpp">void Aes::SetAesKeyBin(int ByteLength, const char *cAesKeyBin) {
	char *m_cAesKeyBin=0;

	m_cAesKeyBin = new char[ByteLength];
	m_cAesKeyBin = cAesKeyBin; // Wie kopiert man n Zeichen von einem Buffer zum anderen?
}
</code></pre>
<p>Die C-String Funktionen kann ich nicht nehmen, weil im Binärstring eine \0 sein könnte. Aus der Winapi wollte ich mich auch nicht unbedingt bedienen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343632</guid><dc:creator><![CDATA[Anfänger xyz]]></dc:creator><pubDate>Mon, 13 Aug 2007 11:10:42 GMT</pubDate></item><item><title><![CDATA[Reply to Binären Buffer kopieren? on Mon, 13 Aug 2007 11:18:12 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Da ist die C-Funktion <a href="http://www.cppreference.com/stdstring/memcpy.html" rel="nofollow">memcpy</a> zuständig.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343638</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 13 Aug 2007 11:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to Binären Buffer kopieren? on Mon, 13 Aug 2007 11:17:18 GMT]]></title><description><![CDATA[<p>Per Zuweisung kopierst du nicht die Zeichen, sondern biegst nur den Pointer um - das Ergebnis ist auf jeden Fall ein Speicherleck (mit der Chance auf einen späteren Totalabsturz). Zeichen kopieren kannst du mit memcpy(), std::copy() oder stückweise in einer Schleife <code>for(int i=0;i&lt;ByteLength;++i)m_cAesKeyBin[i]=cAesKeyBin[i];</code> .</p>
<p>PS: Was für einen Sinn macht die Funktion so, wie sie dort steht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343639</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 13 Aug 2007 11:17:18 GMT</pubDate></item><item><title><![CDATA[Reply to Binären Buffer kopieren? on Mon, 13 Aug 2007 11:32:29 GMT]]></title><description><![CDATA[<p>Die Funktion soll einen AES Key in binärer Form bekommen und ihn in eine private Variable kopieren.</p>
<p>Ich habe Akaris Vorschlag mal angewendet:</p>
<pre><code class="language-cpp">void AES::SetAesKeyBin(unsigned int Length, const char *cAesKeyBin) {

	if (m_cAesKeyBin!=0) {
		delete m_cAesKeyBin;
		m_cAesKeyBin=0;
	}

	m_cAesKeyBin = new char[iBitLength/8];
	memcpy(m_cAesKeyBin, cAesKeyBin, Length);
}
</code></pre>
<p>Wie sähe das in C++ mit dem Copy aus? Ich finde im Internet nichts passendes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343651</guid><dc:creator><![CDATA[Anfänger xyz]]></dc:creator><pubDate>Mon, 13 Aug 2007 11:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to Binären Buffer kopieren? on Mon, 13 Aug 2007 11:37:29 GMT]]></title><description><![CDATA[<p>Zuerst mal: delete 0 macht nichts und Du brauchst den Zeiger nicht explizit auf 0 setzen, wenn Du ihn danach sowieso wieder umsetzt.<br />
Zum zweiten: Nach einem new**[]** brauchst Du ein delete**[]**</p>
<p>Das und C++-Copy zusammen sähen dann so aus (braucht den Header &lt;algorithm&gt;):</p>
<pre><code class="language-cpp">void AES::SetAesKeyBin(unsigned int Length, const char *cAesKeyBin) {
    delete[] m_cAesKeyBin; // wenn == 0, passiert nichts

    m_cAesKeyBin = new char[iBitLength/8]; // ist sichergestellt, dass iBitLength/8 &gt;= Length?

    std::copy(cAesKeyBin, cAesKeyBin + Length, m_cAesKeyBin);

    // oder du machst aus m_cAesKeyBin ein std::string, dann brauchst Du kein delete, kein new, kein copy...
    m_cAesKeyBin.assign( cAesKeyBin, cAesKeyBin + Length );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1343652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343652</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 13 Aug 2007 11:37:29 GMT</pubDate></item><item><title><![CDATA[Reply to Binären Buffer kopieren? on Mon, 13 Aug 2007 11:38:56 GMT]]></title><description><![CDATA[<p>Erstmal solltest du mal deine Variablennamen entknoten (und im oberen Beitrag war m_cAesKeyBin eine lokale Variable, die direkt nach der Zuweisung weggeworfen wurde).</p>
<p>Zweitens: copy() sieht so ähnlich aus wie memcpy(), nur die Parameter stehen in einer anderen Reihenfolge:</p>
<pre><code class="language-cpp">memcpy(cAesKeyBin, cAesKeyBin+Length, m_cAesKeyBin);
</code></pre>
<p>PS: Die Überprüfung des Zeigers und das anschließende NULL-setzen sind übrigens sinnlos <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/1343656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343656</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 13 Aug 2007 11:38:56 GMT</pubDate></item><item><title><![CDATA[Reply to Binären Buffer kopieren? on Mon, 13 Aug 2007 11:56:40 GMT]]></title><description><![CDATA[<p>Naja, ich wollte Euch nicht mit ellenlangem Source ermüden. Deshalb habe ich einiges weggelassen und improvisiert... das assign von std::string kannte ich noch nicht. So bin ich dann auch char* los.</p>
<p>Vielen Dank Euch dreien <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343664</guid><dc:creator><![CDATA[Anfänger xyz]]></dc:creator><pubDate>Mon, 13 Aug 2007 11:56:40 GMT</pubDate></item></channel></rss>