<?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[Code, was macht dieser?]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich bin eigentlich Java und C# Entwickler und möchte nun folgenden C++<br />
Code in C# übertragen.</p>
<p>Da es in C# direkt die funktion eines dementsprechenden Pointers nicht gibt,<br />
ist die Frage wie ich das ansonsten lösen kann... in Wirklichkeit wird als<br />
Übergabeparameter ein Array vom Typ char übergeben.</p>
<p>Jetzt die Frage an die ganzen C++ Cracks hier,<br />
was genau macht dieser Code und wie kann man diesen umsetzen?</p>
<pre><code>static const unsigned short crc_table[16] = 
{
    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
    0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef
};

unsigned short CalculateCrc(char *data, unsigned int len)
{
    unsigned int i;
    unsigned short crc = 0;

    while(len--)
    {
        i = (crc &gt;&gt; 12) ^ (*data &gt;&gt; 4);
	    crc = crc_table[i &amp; 0x0F] ^ (crc &lt;&lt; 4);
	    i = (crc &gt;&gt; 12) ^ (*data &gt;&gt; 0);
	    crc = crc_table[i &amp; 0x0F] ^ (crc &lt;&lt; 4);
	    data++;
	} 

    return (crc &amp; 0xFFFF);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/324182/code-was-macht-dieser</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 20:26:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324182.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Mar 2014 06:43:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Code, was macht dieser? on Thu, 06 Mar 2014 06:43:27 GMT]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich bin eigentlich Java und C# Entwickler und möchte nun folgenden C++<br />
Code in C# übertragen.</p>
<p>Da es in C# direkt die funktion eines dementsprechenden Pointers nicht gibt,<br />
ist die Frage wie ich das ansonsten lösen kann... in Wirklichkeit wird als<br />
Übergabeparameter ein Array vom Typ char übergeben.</p>
<p>Jetzt die Frage an die ganzen C++ Cracks hier,<br />
was genau macht dieser Code und wie kann man diesen umsetzen?</p>
<pre><code>static const unsigned short crc_table[16] = 
{
    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
    0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef
};

unsigned short CalculateCrc(char *data, unsigned int len)
{
    unsigned int i;
    unsigned short crc = 0;

    while(len--)
    {
        i = (crc &gt;&gt; 12) ^ (*data &gt;&gt; 4);
	    crc = crc_table[i &amp; 0x0F] ^ (crc &lt;&lt; 4);
	    i = (crc &gt;&gt; 12) ^ (*data &gt;&gt; 0);
	    crc = crc_table[i &amp; 0x0F] ^ (crc &lt;&lt; 4);
	    data++;
	} 

    return (crc &amp; 0xFFFF);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2387013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387013</guid><dc:creator><![CDATA[Sakulrelda]]></dc:creator><pubDate>Thu, 06 Mar 2014 06:43:27 GMT</pubDate></item><item><title><![CDATA[Reply to Code, was macht dieser? on Thu, 06 Mar 2014 07:06:11 GMT]]></title><description><![CDATA[<p>data ist ein Array und len ist die Laenge des Arrays. data zeigt dazu auch noch auf die aktuelle Position (was normal dein i macht), mit *data liest man den Wert an der Position und mit data++ inkrementiert man den Index (also quasi i++).</p>
<pre><code>unsigned short CalculateCrc(char data[])
{
    unsigned int i;
    unsigned short crc = 0;

    for(int x = 0; x &lt; data.Length(); x++)
    {
        i = (crc &gt;&gt; 12) ^ (data[x] &gt;&gt; 4);
        crc = crc_table[i &amp; 0x0F] ^ (crc &lt;&lt; 4);
        i = (crc &gt;&gt; 12) ^ (data[x] &gt;&gt; 0);
        crc = crc_table[i &amp; 0x0F] ^ (crc &lt;&lt; 4);
    }

    return (crc &amp; 0xFFFF);
}
</code></pre>
<p>Jetzt aber mal Butter bei die Fische: Was fuer ein Entwickler hat den so ueberhaupt keine Ahnung von Pointern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387015</guid><dc:creator><![CDATA[ArneMax]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:06:11 GMT</pubDate></item><item><title><![CDATA[Reply to Code, was macht dieser? on Thu, 06 Mar 2014 07:07:27 GMT]]></title><description><![CDATA[<p>Also damit nicht kommt, ich würde mir keine Gedanken machen <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>Ich vermute, dass ich irgendwie sowas in der Art machen muss oder ?</p>
<pre><code>static const short[16] crc_table = 
{
    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
    0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef
};

short CalculateCrc(char[] data, unsigned int arrayDataLen)
{
    int i;
    short crc = 0;

    while(arrayDataLen&gt;0)
    {

        //Pointer *data durch data[data.Length-arrayDataLen]
        //Jedoch ist mir nicht ganz klar was &gt;&gt;;^ usw macht und ob ich das überhautp in C# nutzen kann ?!
        i = (crc &gt;&gt; 12) ^ (*data &gt;&gt; 4);
        crc = crc_table[i &amp; 0x0F] ^ (crc &lt;&lt; 4);
        i = (crc &gt;&gt; 12) ^ (*data &gt;&gt; 0);
        crc = crc_table[i &amp; 0x0F] ^ (crc &lt;&lt; 4);
        arrayDataLen--;
    } 

    return (crc &amp; 0xFFFF);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2387016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387016</guid><dc:creator><![CDATA[Sakulrelda]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to Code, was macht dieser? on Thu, 06 Mar 2014 07:12:15 GMT]]></title><description><![CDATA[<blockquote>
<blockquote>
<p>, |, &amp;, &lt;&lt;, ^ sind Operatoren, die Bits bearbeiten.<br />
Google mal: bitwise operators c++</p>
</blockquote>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2387017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387017</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:12:15 GMT</pubDate></item><item><title><![CDATA[Reply to Code, was macht dieser? on Thu, 06 Mar 2014 07:12:25 GMT]]></title><description><![CDATA[<p>ArneMax schrieb:</p>
<blockquote>
<p>data ist ein Array und len ist die Laenge des Arrays. data zeigt dazu auch noch auf die aktuelle Position (was normal dein i macht), mit *data liest man den Wert an der Position und mit data++ inkrementiert man den Index (also quasi i++).</p>
<pre><code>unsigned short CalculateCrc(char data[])
{
    unsigned int i;
    unsigned short crc = 0;
   
    for(int x = 0; x &lt; data.Length(); x++)
    {
        i = (crc &gt;&gt; 12) ^ (data[x] &gt;&gt; 4);
        crc = crc_table[i &amp; 0x0F] ^ (crc &lt;&lt; 4);
        i = (crc &gt;&gt; 12) ^ (data[x] &gt;&gt; 0);
        crc = crc_table[i &amp; 0x0F] ^ (crc &lt;&lt; 4);
    }
 
    return (crc &amp; 0xFFFF);
}
</code></pre>
<p>Jetzt aber mal Butter bei die Fische: Was fuer ein Entwickler hat den so ueberhaupt keine Ahnung von Pointern?</p>
</blockquote>
<p>&gt; Da warst du wohl mal wieder schnelle <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=";D"
      alt="😉"
    /><br />
--&gt; Zu dem Thema Pointer kann ich nur sagen das ich es prinzipiell schon verstehe mich aber &quot;faulerweise&quot; nie richtig damit beschäftigt habe... Deshalb muss ich ja hier jetzt auch um Hilfe betteln <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="🙂"
    /> Vielen Dank aufjedenfall für die schnelle Hilfe und ich werde das ganze gleich mal versuchen umzusetzen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387018</guid><dc:creator><![CDATA[Sakulrelda]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:12:25 GMT</pubDate></item></channel></rss>