<?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[Alignment von Datenstrukturen]]></title><description><![CDATA[<p>Ich habe folgendes Problem:</p>
<p>Ich habe eine Klasse:</p>
<pre><code>class foo
{
    char a;
    short b;
    ...
};
</code></pre>
<p>und ein char-Array mit Daten aus einer Datei.<br />
In der Datei sind die Daten ohne besondere Ausrichtung,<br />
versuche ich jetzt, über die Klasse auf die Daten zuzugreifen,<br />
gibt es einen Fehler:</p>
<pre><code>foo *a=(foo *)&amp;data[100];
cout&lt;&lt;int(a-&gt;a); //kein Problem
cout&lt;&lt;a-&gt;b;      //die Daten sind um ein Byte verschoben
</code></pre>
<p>Gibt es eine Möglichkeit, die Ausrichtung so zu ändern, dass das funktioniert?<br />
(Und zwar ohne char-Array anstatt dem short)</p>
<p>Und wie weise ich einem short am besten den Wert aus einem char-Array zu?</p>
<pre><code>char foo[]={10,20};

short a=*(short *)&amp;foo[0];   //funktioniert
short a=foo[0]*0x100+foo[1]; //funktioniert
ahort a=(short)foo[0];       //funktioniert nicht, a=10
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/131133/alignment-von-datenstrukturen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 00:24:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/131133.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 Dec 2005 12:57:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Alignment von Datenstrukturen on Sat, 31 Dec 2005 12:57:42 GMT]]></title><description><![CDATA[<p>Ich habe folgendes Problem:</p>
<p>Ich habe eine Klasse:</p>
<pre><code>class foo
{
    char a;
    short b;
    ...
};
</code></pre>
<p>und ein char-Array mit Daten aus einer Datei.<br />
In der Datei sind die Daten ohne besondere Ausrichtung,<br />
versuche ich jetzt, über die Klasse auf die Daten zuzugreifen,<br />
gibt es einen Fehler:</p>
<pre><code>foo *a=(foo *)&amp;data[100];
cout&lt;&lt;int(a-&gt;a); //kein Problem
cout&lt;&lt;a-&gt;b;      //die Daten sind um ein Byte verschoben
</code></pre>
<p>Gibt es eine Möglichkeit, die Ausrichtung so zu ändern, dass das funktioniert?<br />
(Und zwar ohne char-Array anstatt dem short)</p>
<p>Und wie weise ich einem short am besten den Wert aus einem char-Array zu?</p>
<pre><code>char foo[]={10,20};

short a=*(short *)&amp;foo[0];   //funktioniert
short a=foo[0]*0x100+foo[1]; //funktioniert
ahort a=(short)foo[0];       //funktioniert nicht, a=10
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/953370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/953370</guid><dc:creator><![CDATA[Er1c]]></dc:creator><pubDate>Sat, 31 Dec 2005 12:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Alignment von Datenstrukturen on Sat, 31 Dec 2005 15:12:42 GMT]]></title><description><![CDATA[<p>Problem gelößt</p>
<pre><code>__attribute__ ((packed))
</code></pre>
<p>ist mein Freund <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/953507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/953507</guid><dc:creator><![CDATA[Er1c]]></dc:creator><pubDate>Sat, 31 Dec 2005 15:12:42 GMT</pubDate></item></channel></rss>