<?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[16 Bit IP Checksumme berechnen]]></title><description><![CDATA[<p>Hallo,<br />
ich habe in einem String den Header von einem IP-Paket.<br />
um an Pos 11 und 12 die IP-Checksumme eintragen zu können, brauche ich eine Berechnungsfunktion.<br />
Mit der Beispielfunktion von</p>
<p><a href="http://www.netfor2.com/ipsum.htm" rel="nofollow">www.netfor2.com/ipsum.htm</a></p>
<p>komme ich wegen meinem unglücklichen Zahlenformat nicht weiter.</p>
<p>Ich habe:<br />
-----------------<br />
char Puffer[60];<br />
strcpy (Puffer, &quot;45 00 0a 0a 0a 0a 40 00 0a 06 00 00 c0 a8 06 02 c0 a8 06 05&quot;);<br />
------------------<br />
bringt mir eine Umwandlung mit &quot;StrTointEX&quot; etwas?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/58689/16-bit-ip-checksumme-berechnen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 02 Jun 2026 20:57:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/58689.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Dec 2003 13:31:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 16 Bit IP Checksumme berechnen on Mon, 15 Dec 2003 13:31:34 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe in einem String den Header von einem IP-Paket.<br />
um an Pos 11 und 12 die IP-Checksumme eintragen zu können, brauche ich eine Berechnungsfunktion.<br />
Mit der Beispielfunktion von</p>
<p><a href="http://www.netfor2.com/ipsum.htm" rel="nofollow">www.netfor2.com/ipsum.htm</a></p>
<p>komme ich wegen meinem unglücklichen Zahlenformat nicht weiter.</p>
<p>Ich habe:<br />
-----------------<br />
char Puffer[60];<br />
strcpy (Puffer, &quot;45 00 0a 0a 0a 0a 40 00 0a 06 00 00 c0 a8 06 02 c0 a8 06 05&quot;);<br />
------------------<br />
bringt mir eine Umwandlung mit &quot;StrTointEX&quot; etwas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/416466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/416466</guid><dc:creator><![CDATA[wwipfel]]></dc:creator><pubDate>Mon, 15 Dec 2003 13:31:34 GMT</pubDate></item><item><title><![CDATA[Reply to 16 Bit IP Checksumme berechnen on Mon, 15 Dec 2003 16:36:11 GMT]]></title><description><![CDATA[<p>sscanf kann dir helfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <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>
<pre><code class="language-cpp">USHORT IpCrc16(char* Buffer, int iLenght)
{
	UINT uSum = 0, uFirst, uNext;
	char sz[6] = {0};

	for (int i = 0; i &lt; iLenght; i += 6) {
		sz[0] = Buffer[i], sz[1] = Buffer[i + 1];
		sz[3] = Buffer[i + 3], sz[4] = Buffer[i + 4];

		::sscanf(sz,&quot;%02x&quot;,&amp;uFirst), ::sscanf(sz + 3,&quot;%02x&quot;,&amp;uNext);
		uSum += ((uFirst &lt;&lt; 8) &amp; 0xff00) + (uNext &amp; 0xff);
	}

	while (uSum &gt;&gt; 16)
		uSum = (uSum &amp; 0xffff) + (uSum &gt;&gt; 16);

	uSum = ~uSum;
	return uSum &amp; 0xffff;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/416684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/416684</guid><dc:creator><![CDATA[Shlo]]></dc:creator><pubDate>Mon, 15 Dec 2003 16:36:11 GMT</pubDate></item><item><title><![CDATA[Reply to 16 Bit IP Checksumme berechnen on Mon, 15 Dec 2003 23:36:01 GMT]]></title><description><![CDATA[<p>Vielen Dank,<br />
die Funktion klappt super.<br />
Kann ich die Funktion auch für die TCP Checksumme nutzen?<br />
Die Funktion auf <a href="http://www.netfor2.com/tcpsum.htm" rel="nofollow">www.netfor2.com/tcpsum.htm</a> schein die ganze Aufgabe einfach nur Scheibenweise zu erzeugen oder?<br />
Mehrfach die Summe bilden und am Ende das Komplement?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/417017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/417017</guid><dc:creator><![CDATA[wwipfel]]></dc:creator><pubDate>Mon, 15 Dec 2003 23:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to 16 Bit IP Checksumme berechnen on Mon, 15 Dec 2003 23:50:29 GMT]]></title><description><![CDATA[<p>richtig, die Vorgehensweise ist genau die selbe. <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/417025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/417025</guid><dc:creator><![CDATA[Shlo]]></dc:creator><pubDate>Mon, 15 Dec 2003 23:50:29 GMT</pubDate></item></channel></rss>