<?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[Compiler befehlen, bestimmte structs in big endian zu verwerten?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich arbeite derzeit an einer Applikation, welche von einem Gerät objektorientiert verkapselte Daten bekommt.</p>
<p>Die Definitionen der structs habe ich (sind ca. 200 Stück).</p>
<p>Angenommen ich hab ein struct</p>
<p>struct My{<br />
unsigned long a;<br />
unsigned short b;<br />
unsigned char c;<br />
};</p>
<p>Gesendet wird vom Gerät das Struct so:<br />
für a: 0xABCDEFCC<br />
für b: 0xABCD<br />
für c: 0xAB</p>
<p>wenn ich per memcpy die eingelesenen Daten in mein struct kopiere und im Code mit den Daten arbeiten will, stehen die Daten so im Speicher:</p>
<p>für a: 0xCCEFCDAB (d.h. nun in big endian)<br />
für b: 0xCDAB<br />
für c: 0xAB</p>
<p>d.h. ich habe nur die Bytes korrekt <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>
<p>Mir fällt im Moment keine günstige Lösung ein, wie ich das Problem beheben könnte.<br />
Wären es nur 4-5 Structs könnte ich natürlich für jedes eine kleine Routine basteln, in der die Bytes zu big endian geswapt werden.</p>
<p>Allerdings ist das für die 200 structs schon schwerst aufwendig.</p>
<p>Habt ihr vielleicht Ideen? <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>
<p>Irgendeine kleine Deklaration beim struct vlt, die dem Compiler sagt &quot;Achtung - hier big endian&quot; <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>
<p>struct My{ ... } big_endian;</p>
<p><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>Viele Dank schonmal,<br />
Kevin</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182849/compiler-befehlen-bestimmte-structs-in-big-endian-zu-verwerten</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 00:49:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182849.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 May 2007 20:57:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Compiler befehlen, bestimmte structs in big endian zu verwerten? on Tue, 29 May 2007 20:57:06 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich arbeite derzeit an einer Applikation, welche von einem Gerät objektorientiert verkapselte Daten bekommt.</p>
<p>Die Definitionen der structs habe ich (sind ca. 200 Stück).</p>
<p>Angenommen ich hab ein struct</p>
<p>struct My{<br />
unsigned long a;<br />
unsigned short b;<br />
unsigned char c;<br />
};</p>
<p>Gesendet wird vom Gerät das Struct so:<br />
für a: 0xABCDEFCC<br />
für b: 0xABCD<br />
für c: 0xAB</p>
<p>wenn ich per memcpy die eingelesenen Daten in mein struct kopiere und im Code mit den Daten arbeiten will, stehen die Daten so im Speicher:</p>
<p>für a: 0xCCEFCDAB (d.h. nun in big endian)<br />
für b: 0xCDAB<br />
für c: 0xAB</p>
<p>d.h. ich habe nur die Bytes korrekt <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>
<p>Mir fällt im Moment keine günstige Lösung ein, wie ich das Problem beheben könnte.<br />
Wären es nur 4-5 Structs könnte ich natürlich für jedes eine kleine Routine basteln, in der die Bytes zu big endian geswapt werden.</p>
<p>Allerdings ist das für die 200 structs schon schwerst aufwendig.</p>
<p>Habt ihr vielleicht Ideen? <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>
<p>Irgendeine kleine Deklaration beim struct vlt, die dem Compiler sagt &quot;Achtung - hier big endian&quot; <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>
<p>struct My{ ... } big_endian;</p>
<p><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>Viele Dank schonmal,<br />
Kevin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294832</guid><dc:creator><![CDATA[Surkevin]]></dc:creator><pubDate>Tue, 29 May 2007 20:57:06 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler befehlen, bestimmte structs in big endian zu verwerten? on Tue, 29 May 2007 21:29:03 GMT]]></title><description><![CDATA[<p>So was gibt es nicht in ISO C++. Vielleicht bietet dein Compiler eine Erweiterung dafür an (glaube es aber fast nicht).</p>
<p>Ansonsten bleibt dir nichts anderes übrig als nach dem einlesen zu swappen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294847</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Tue, 29 May 2007 21:29:03 GMT</pubDate></item></channel></rss>