<?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[unsigned chars addieren]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>wie addiert man denn am besten zwei 160-bit-Zahlen, die jeweils in einem 20-stelligen unsigned char* Puffer abgelegt sind? Die Puffer wurden irgendwann mal so definiert:</p>
<pre><code class="language-cpp">unsigned char* buff_a = new unsigned char[20];
unsigned char* buff_b = new unsigned char[20];
</code></pre>
<p>Mein Problem ist, dass die Wertebereiche ja viel zu groß sind, um das Ganze irgendwie in Integer oder Ähnliches umzuwandeln. Gibt es dazu vielleicht irgendwelche Funktionen, oder muss ich das char-Array Stelle für Stelle addieren und mich selbst um Bösheiten wie Übertrag und Überlauf kümmern?</p>
<p>Vielen Dank schon mal im Voraus <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/129785/unsigned-chars-addieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 09:36:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/129785.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Dec 2005 16:09:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to unsigned chars addieren on Fri, 16 Dec 2005 16:09:14 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>wie addiert man denn am besten zwei 160-bit-Zahlen, die jeweils in einem 20-stelligen unsigned char* Puffer abgelegt sind? Die Puffer wurden irgendwann mal so definiert:</p>
<pre><code class="language-cpp">unsigned char* buff_a = new unsigned char[20];
unsigned char* buff_b = new unsigned char[20];
</code></pre>
<p>Mein Problem ist, dass die Wertebereiche ja viel zu groß sind, um das Ganze irgendwie in Integer oder Ähnliches umzuwandeln. Gibt es dazu vielleicht irgendwelche Funktionen, oder muss ich das char-Array Stelle für Stelle addieren und mich selbst um Bösheiten wie Übertrag und Überlauf kümmern?</p>
<p>Vielen Dank schon mal im Voraus <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/943662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943662</guid><dc:creator><![CDATA[hejira]]></dc:creator><pubDate>Fri, 16 Dec 2005 16:09:14 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned chars addieren on Fri, 16 Dec 2005 16:20:46 GMT]]></title><description><![CDATA[<p>ich frag mich warum du unsigned char deklarierst....das sagt dem kompiler doch nur ob die variablen nur positive vorzeichen haben...und char gibet nich ander oder? und kann es sein das du nur zahlen addieren möchtest? wenn ja dann nimm doch einfach ne int variable oder ne double oder long oder so.....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943670</guid><dc:creator><![CDATA[LordSash]]></dc:creator><pubDate>Fri, 16 Dec 2005 16:20:46 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned chars addieren on Fri, 16 Dec 2005 16:25:57 GMT]]></title><description><![CDATA[<blockquote>
<p>ich frag mich warum du unsigned char deklarierst</p>
</blockquote>
<p>Die Dinger kommen aus einer Klasse, die für mich Strings hasht (SHA-1). Ich hab keinen Einfluss darauf, aber ich muss halt irgendwie mit den Hashwerten rechnen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943675</guid><dc:creator><![CDATA[hejira]]></dc:creator><pubDate>Fri, 16 Dec 2005 16:25:57 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned chars addieren on Fri, 16 Dec 2005 16:34:19 GMT]]></title><description><![CDATA[<p>hejira schrieb:</p>
<blockquote>
<p>oder muss ich das char-Array Stelle für Stelle addieren und mich selbst um Bösheiten wie Übertrag und Überlauf kümmern?</p>
</blockquote>
<p>Genauso schauts aus. Libs für grosse Zahlen machen das auch nichts anders. Und C++ hilft dir insofern, dass du diverse Bitoperatoren verwenden kannst, um dir das Leben etwas zu erleichtern.</p>
<p>LordSash schrieb:</p>
<blockquote>
<p>ich frag mich warum du unsigned char deklarierst....das sagt dem kompiler doch nur ob die variablen nur positive vorzeichen haben</p>
</blockquote>
<p>Und wo ist das Problem dabei?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943686</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Fri, 16 Dec 2005 16:34:19 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned chars addieren on Fri, 16 Dec 2005 19:47:44 GMT]]></title><description><![CDATA[<p>Dass char nur positiv ist, stimmt so nur bedingt. Wird char zur Darstellung von Zeichen verwendet, z. B. zur Ausgabe auf die Konsole, so wird es nur positiv verwendet. Man betrachte dagegen folgendes:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main() {
   char c = 1;
   unsigned char u = 1;
   c &lt;&lt;= 7;
   u &lt;&lt;= 7;
   std::cout &lt;&lt; (int) c &lt;&lt; '\n' &lt;&lt; (int) u;
}
</code></pre>
<p>Hier erhält man als Ausgabe:<br />
-128<br />
128</p>
<p>D. h., verwendet man char als 8-bit-Zahl, so gibt es sehr wohl eine vorzeichenfreie und eine vorzeichenbehaftete Variante!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943815</guid><dc:creator><![CDATA[Aconcagua]]></dc:creator><pubDate>Fri, 16 Dec 2005 19:47:44 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned chars addieren on Fri, 16 Dec 2005 20:19:11 GMT]]></title><description><![CDATA[<p>Aconcagua schrieb:</p>
<blockquote>
<p>Dass char nur positiv ist, stimmt so nur bedingt.</p>
</blockquote>
<p>Äh, die Bedingung im OP war dass man <em>unsigned</em> davor schreibt...</p>
<p>Und du hast noch einen weiteren Typ in deiner Aufzählung vergessen: <em>signed char</em>; die signedness von char ist implementation-defined.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943841</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Fri, 16 Dec 2005 20:19:11 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned chars addieren on Fri, 16 Dec 2005 20:33:07 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>die Bedingung im OP</p>
</blockquote>
<p>Auch sehr schön... <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/943850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943850</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Fri, 16 Dec 2005 20:33:07 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned chars addieren on Fri, 16 Dec 2005 21:24:05 GMT]]></title><description><![CDATA[<p>Ist doch nicht so furchtbar schwer:</p>
<pre><code class="language-cpp">unsingned char buff_c[20] = {0};
int übertrag = 0;
for( int j = 0 ; j &lt; 20; ++j )
  for( int i = 0; i &lt; 8; ++i )
  {
     int bita = buff_a[ j ] &amp; 1 &lt;&lt; i;
     int bitb = buff_b[ j ] &amp; 1 &lt;&lt; i;

     if( bita &amp;&amp; bitb )
     {
         buff_c[ i ] = 1;
         if( !übertrag )
            übertrag = 1;            
     }
     elseif( bita || bitb )
     {
         buff_c[ i ] = bita ? bita : bitb;
     }
     else
     {
         if( übertrag )
         {
              buff_c[ i ] = 1;
              übertrag = 0;
         }
         //else buff_c[ i ] = 0; //nicht nötig, da buff_c eh mit nullen gefüllt ist
     }
  }
</code></pre>
<p>Jetzt nur so schnell hingeschrieben, müsst aber so gehen. Man sollte es allerdings etwas schöner machen <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/943882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943882</guid><dc:creator><![CDATA[...]]></dc:creator><pubDate>Fri, 16 Dec 2005 21:24:05 GMT</pubDate></item></channel></rss>