<?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[Felder in einen Pointer]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie bekomme ich von</p>
<pre><code>global_fnav_lookup.subframe[_subFrm_].page[_page_].part[0..9]
</code></pre>
<p>den pointer auf die parts [0..9]? Da ich einen crc berechnen muss und die funktion ein ganzen stream verlangt brauche ich den Zugriff als Pointer. Weis jemand Rat?</p>
<p>zugriff:</p>
<pre><code>global_fnav_lookup.subframe[_subFrm_].page[_page_]++;
</code></pre>
<p>geht nich!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182069/felder-in-einen-pointer</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 11:05:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182069.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 May 2007 08:21:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 08:21:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie bekomme ich von</p>
<pre><code>global_fnav_lookup.subframe[_subFrm_].page[_page_].part[0..9]
</code></pre>
<p>den pointer auf die parts [0..9]? Da ich einen crc berechnen muss und die funktion ein ganzen stream verlangt brauche ich den Zugriff als Pointer. Weis jemand Rat?</p>
<p>zugriff:</p>
<pre><code>global_fnav_lookup.subframe[_subFrm_].page[_page_]++;
</code></pre>
<p>geht nich!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288866</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Mon, 21 May 2007 08:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 08:25:16 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Pointerarithmetik:</p>
<pre><code class="language-cpp">&amp;global_fnav_lookup.subframe[_subFrm_].page[_page_].part[0]
</code></pre>
<p>Übrigens: Ich würde Variablennamen nicht mit '_' beginnen lassen - da kommst Du Dir schnell mit Compilerausdrücken in die Quere.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288868</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 21 May 2007 08:25:16 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 08:32:01 GMT]]></title><description><![CDATA[<p>Vielen Dank,</p>
<p>also ein part ist ein INT32 und 25 Bit länge wenn ich jetzt den pointer in part[0] inkrementiere bekomme ich dann das msb von part[1] oder sind da die stopfbits von part[1]? Weisst du wie ich mir einen 10x25Bits container aufbauen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288874</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Mon, 21 May 2007 08:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 08:47:28 GMT]]></title><description><![CDATA[<p>traceman schrieb:</p>
<blockquote>
<p>also ein part ist ein INT32 und 25 Bit länge wenn ich jetzt den pointer in part[0] inkrementiere</p>
</blockquote>
<p>Wäre part ein INT32, wäre part[0] wohl nicht möglich. Es handelt sich wohl eher um ein INT32* oder irgendwas in der Richtung.<br />
part[0] ist wohl kein Zeiger, sondern dann ein INT32- Und den wert wirst du wohl kaum inkrementieren wollen.</p>
<p>Wenn ich davon ausgehe, dass part ein Zeiger auf INT32 ist, dann ist part[1] das selbe, wie *(part+1).<br />
Das du von dem INT32, der wohl 32 Bit hat, nur 25Bit benutzt, weiß doch niemand.</p>
<p>Dein 10x25-Bit-Container ist nicht ganz so einfach. Da musst du dann viel rumschiften und Bits maskieren. Ist es denn tatsächlich wichtig, das die 10x25 Bit direkt hintereinander liegen, oder können auch Padding-Bits dazwischen sein. Denn die vorgehensweise mit dem Feld von INT32 dürfte deutlich schneller und vor allem deutlich leichter umzusetzen sein, als der andere Kram.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288887</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Mon, 21 May 2007 08:47:28 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 08:52:11 GMT]]></title><description><![CDATA[<p>traceman schrieb:</p>
<blockquote>
<p>...INT32 und 25 Bit länge ... msb von part[1] ...stopfbits ...</p>
</blockquote>
<p>Das sind alles Dinge, die von Deiner jeweiligen Plattform (und Compiler/-version/-einstellung) abhängen - deswegen kann sie Dir niemand allgemeingültig beantworten !<br />
Wenn Du eine feste Repräsentation brauchst, solltest Du sie Dir selbst erzeugen (z.B. in strings fester Länge und Orientierung kopieren) und über dieses Format Deinen CRC rechnen...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288890</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 21 May 2007 08:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 09:48:43 GMT]]></title><description><![CDATA[<p>Danke, klasse Antworten</p>
<blockquote>
<p>Ist es denn tatsächlich wichtig, das die 10x25 Bit direkt hintereinander liegen, oder können auch Padding-Bits dazwischen sein.</p>
</blockquote>
<p>Ich denke schon das der crc computer die datenhineinander will weil ich eben die checksum brauche von dem ganzen stream. Wie will er dann denn den Rest zusammen bringen? Ich verwende jetzt eigentlich einen CRC Computer der Datei CRC berechnet der kann in meinen Fall eben auch die Größe verarbeiten.</p>
<p>Am leichtesten wäre es natürlich wie du sagst das ich einen durchgehenden String hätte (aber so einen großen Datentyp gibts halt nicht). Aber im Prinzip müsse ich doch alle Daten von den 25 belegten Bits nach links schieben das wären dann jeweils pro part i {1..10} mal 7 stellen rüberschieben dann bleiben hinten noch 70 Stellen frei also 2 parts kann ich dann vergessen . Wenn ich das dann hab dann schau ich das ich die Daten hintereiander als pointer bekomme...also mach ich einen INT32 *pointer auf und kopiere 32 Bits rein dann inkrementiere ich und dann die nächsten 32 Bits. Dann hab ich doch dalle Daten hintereinander. Oder liegen die Daten bereits oben als feld hintereinander? Kann es sein das Part[0] und Part[1] im Speicher ganz wo anders liegen? (Cpp Basics <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="🙄"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288919</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Mon, 21 May 2007 09:48:43 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 09:39:42 GMT]]></title><description><![CDATA[<p>Du kannst (wenn dich die Platz&quot;verschwendung&quot; nicht stört) die höchsten 7 Bit deines INT32 unberührt lassen und je einen 25-Bit-Wert in einem int unterbringen. Andernfalls müsstest du dich mit reichlich Bit-Shifts und logischen Kombinationen herumschlagen, um deine 25-Bit-Werte aus dem int-Array zusammenzusuchen.</p>
<p>PS: Ja, die Elemente eines Arrays liegen hintereinander im Speicher <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/1288924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288924</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 21 May 2007 09:39:42 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 09:51:00 GMT]]></title><description><![CDATA[<blockquote>
<p>und je einen 25-Bit-Wert in einem int unterbringen</p>
</blockquote>
<p>kannst du mir das noch genauer erklären?</p>
<p>Gruss<br />
Sebastian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288931</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Mon, 21 May 2007 09:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 09:51:35 GMT]]></title><description><![CDATA[<p>Klar: Ein INT32 ist auf jeden Fall groß genug, um deine 25 Bit Daten unterzubringen. Also ignorieren wird die Tatsache, daß er noch etwas mehr Platz hätte (und setzen die höchstwertigen 7 Bit auf 0).</p>
<p>PS: Aber 25 Bit ist eine etwas ungewönhliche Größe <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="😉"
    /> Was genau hast du mit den Daten vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288934</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 21 May 2007 09:51:35 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 10:01:33 GMT]]></title><description><![CDATA[<p>Gut, die 25Bitblöcker müssen also hintereinander liegen und es sind genau 10.</p>
<p>Am einfachsten ist da wohl fast ein:</p>
<pre><code class="language-cpp">struct Foo {
   int part0 : 25;
   int part1 : 25;
   int part2 : 25;
   ...
   int part9 : 25;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1288940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288940</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Mon, 21 May 2007 10:01:33 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 10:06:12 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1836">@Helium</a>: Selbst bei solchen Bitfeldern ist (afaik) nicht gesichert, daß sie kontinuierlich im Speicher liegen. Um den Speicher bitweise zu organisieren, wäre aber ein bitset&lt;250&gt; oder vector&lt;bool&gt; geeignet (um die Zusammenfassung der Bits zu Zahlen mußt du dich dabei aber selber kümmern).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288943</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 21 May 2007 10:06:12 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 10:57:08 GMT]]></title><description><![CDATA[<p>traceman schrieb:</p>
<blockquote>
<p>...Ich denke schon das der crc computer die datenhineinander will ...</p>
</blockquote>
<p>Ach so - Du willst ein vorgegebenes Protokoll umsetzen ! Wusste ich nicht - ich dachte, Du wolltest Dir selbst einen crc schreiben (rechnen und prüfen in Deiner Hand). Dann wird Dir vermutlich nichts Anderes übrigbleiben, als mit Deiner Plattform rumzuprobieren.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288974</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 21 May 2007 10:57:08 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 12:05:01 GMT]]></title><description><![CDATA[<blockquote>
<p>C/C++ Code:<br />
struct Foo {<br />
int part0 : 25;<br />
int part1 : 25;<br />
int part2 : 25;<br />
...<br />
int part9 : 25;<br />
};</p>
</blockquote>
<p>Achso du meinst Bitfelder? Nagut, dann kann ich mir das ganze schieben sparen und hab die daten direkt auf 25 Bit beschränkt, nur diese benötige ich eben als pointer.</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>: Was genau hast du mit den Daten vor?</p>
</blockquote>
<p>Die Daten repräsentieren eine GALILEO Navigationsmitteilung also die Daten die ein Satellit zur Erde sendet. Im SIS ICD (Signal in Space Interface Control Document) ist diese mit 250 Bit festgelegt. Der eigentliche Payload ist aber nur 208 Bit groß. Diese 208 Bit Daten müssen aber jetzt erst durch den CRC laufen und dieser Rest (=24 Bit lang)wird dann an die 208 Bit angefügt. Ich habe mir eben überlegt alle Daten auf 10 Parts aufzuteilen (10x250 Bit). Ich brauch aber jetzt erstmal die 208 Bit die in der NavMsg in der Mitte stehen (muss ich noch rausgreifen aus den 250 Bit)<br />
Der CRC Computer benötigt einen Stream der durch 4 Teilbar ist. Passt also: 208/4 = 26.<br />
Naja aber das Problem ist jetzt erst nochmal das der CRC Computer welcher auch immer einen Pointer auf die 208 Daten benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288976</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Mon, 21 May 2007 12:05:01 GMT</pubDate></item><item><title><![CDATA[Reply to Felder in einen Pointer on Mon, 21 May 2007 11:20:43 GMT]]></title><description><![CDATA[<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a>: (...)ich dachte, Du wolltest Dir selbst einen crc schreiben (...)</p>
</blockquote>
<p>am anfang hatte ich es schon vor bloss ich hab einfach keine Erfahrung wie man einen crc von einem 250Bit großen Datenstrom bestimmt. Vielleicht jeweils byteweise die polydivisoin durchführen und dann den rest irgendwie zusammenfassen. Aber egal. Ich glaub ich verwende jetzt lieber eine vorgegebenen weil bis ich einen selbstgeschriebenen wieder gedebugt und getestet habe geht brauchts einfach zu viel zeit</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>: (...) wäre aber ein bitset&lt;250&gt; oder vector&lt;bool&gt; geeignet(...)</p>
</blockquote>
<p>das ist doch genau das was ich suche ich muss mir dann aber gedanken machen wie ich daraus dann einen UINT8 *data_array mache</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288981</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Mon, 21 May 2007 11:20:43 GMT</pubDate></item></channel></rss>