<?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[Fragen zu Big-Endian]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>wie weit muss man als Programmierer Big-Endian und Little-Endian beachten?</p>
<p>Hier mal ein Beispiel was ich vorhabe:</p>
<pre><code>std::vector&lt;unsigned char&gt; meineDaten;

// ...magische Befüllung von 'meineDaten' mit Zufallsdaten (z.B: 100 Byte)...

// hier brauche ich nur die ersten 128 Bit (16 Byte) von meineDaten beginnend vom MSB (most significant bit)
meineDaten.resize(16); // so korrekt?
</code></pre>
<p>Ich generiere eine z.B. Zufallszahl oder ein Hashwert und will die ersten 128 Bit beginnend vom MSB haben. Bei einem std::vector würde ich da einfach '.resize(16)' anwenden. Ist das Vorgehen ok oder ist es problematisch?</p>
<p>Wenn ich bei C++ Werte habe (int, double oder ein char-array), kommt da immer Big-Endian zum Einsatz oder ist es vom Betriebssystem/Hardware abhängig?</p>
<p>viele Grüße,<br />
SBond</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/338075/fragen-zu-big-endian</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 09:13:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338075.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 May 2016 21:15:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fragen zu Big-Endian on Sun, 22 May 2016 21:15:26 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>wie weit muss man als Programmierer Big-Endian und Little-Endian beachten?</p>
<p>Hier mal ein Beispiel was ich vorhabe:</p>
<pre><code>std::vector&lt;unsigned char&gt; meineDaten;

// ...magische Befüllung von 'meineDaten' mit Zufallsdaten (z.B: 100 Byte)...

// hier brauche ich nur die ersten 128 Bit (16 Byte) von meineDaten beginnend vom MSB (most significant bit)
meineDaten.resize(16); // so korrekt?
</code></pre>
<p>Ich generiere eine z.B. Zufallszahl oder ein Hashwert und will die ersten 128 Bit beginnend vom MSB haben. Bei einem std::vector würde ich da einfach '.resize(16)' anwenden. Ist das Vorgehen ok oder ist es problematisch?</p>
<p>Wenn ich bei C++ Werte habe (int, double oder ein char-array), kommt da immer Big-Endian zum Einsatz oder ist es vom Betriebssystem/Hardware abhängig?</p>
<p>viele Grüße,<br />
SBond</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496593</guid><dc:creator><![CDATA[SBond]]></dc:creator><pubDate>Sun, 22 May 2016 21:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Big-Endian on Sun, 22 May 2016 21:52:49 GMT]]></title><description><![CDATA[<p>SBond schrieb:</p>
<blockquote>
<p>wie weit muss man als Programmierer Big-Endian und Little-Endian beachten?</p>
</blockquote>
<p>Normalerweise spielt dies nur eine Rolle, wenn man Binärdaten zwischen unterschiedlichen Computern austauschen möchte.</p>
<blockquote>
<p>Hier mal ein Beispiel was ich vorhabe:</p>
<pre><code>std::vector&lt;unsigned char&gt; meineDaten;

// ...magische Befüllung von 'meineDaten' mit Zufallsdaten (z.B: 100 Byte)...

// hier brauche ich nur die ersten 128 Bit (16 Byte) von meineDaten beginnend vom MSB (most significant bit)
meineDaten.resize(16); // so korrekt?
</code></pre>
<p>Ich generiere eine z.B. Zufallszahl oder ein Hashwert und will die ersten 128 Bit beginnend vom MSB haben. Bei einem std::vector würde ich da einfach '.resize(16)' anwenden. Ist das Vorgehen ok oder ist es problematisch?</p>
</blockquote>
<p>Das ist prinzipiell korrekt. Wirkt sehr umständlich. Die eigentlich interessante Arbeit scheint in dem &quot;magischen&quot; Teil stattzufinden, den du uns nicht zeigst. Die Bitschiebeoperatoren &gt;&gt; und &lt;&lt; kennst du?</p>
<blockquote>
<p>Wenn ich bei C++ Werte habe (int, double oder ein char-array), kommt da immer Big-Endian zum Einsatz oder ist es vom Betriebssystem/Hardware abhängig?</p>
</blockquote>
<p>Letzteres.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496597</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 22 May 2016 21:52:49 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Big-Endian on Sun, 22 May 2016 22:11:40 GMT]]></title><description><![CDATA[<p>vielen Dank für die Hilfe.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Das ist prinzipiell korrekt. Wirkt sehr umständlich. Die eigentlich interessante Arbeit scheint in dem &quot;magischen&quot; Teil stattzufinden, den du uns nicht zeigst. Die Bitschiebeoperatoren &gt;&gt; und &lt;&lt; kennst du?</p>
</blockquote>
<p>Ja gezeigte Code war nur ein Beispiel. In meinem Falle erzeuge ich einen Hash-Wert, von dem ich dann nur die ersten 16 Bytes für andere Operationen verwende. Ich wollte es hier nicht zu weit aufblähen, daher die &quot;magische Befüllung&quot;. Das Arbeiten mit Shift-Operatoren mag ich irgendwie nicht besonders. Habe vor 3-4 Jahren noch Mikroprozessoren in C programmiert und da musste ich diese zu hauf verwenden.</p>
<p>nochmals Danke <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/2496598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496598</guid><dc:creator><![CDATA[SBond]]></dc:creator><pubDate>Sun, 22 May 2016 22:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Big-Endian on Sun, 22 May 2016 22:34:46 GMT]]></title><description><![CDATA[<p>SBond schrieb:</p>
<blockquote>
<p>vielen Dank für die Hilfe.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Das ist prinzipiell korrekt. Wirkt sehr umständlich. Die eigentlich interessante Arbeit scheint in dem &quot;magischen&quot; Teil stattzufinden, den du uns nicht zeigst. Die Bitschiebeoperatoren &gt;&gt; und &lt;&lt; kennst du?</p>
</blockquote>
<p>Ja gezeigte Code war nur ein Beispiel. In meinem Falle erzeuge ich einen Hash-Wert, von dem ich dann nur die ersten 16 Bytes für andere Operationen verwende. Ich wollte es hier nicht zu weit aufblähen, daher die &quot;magische Befüllung&quot;. Das Arbeiten mit Shift-Operatoren mag ich irgendwie nicht besonders. Habe vor 3-4 Jahren noch Mikroprozessoren in C programmiert und da musste ich diese zu hauf verwenden.</p>
<p>nochmals Danke <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>
</blockquote>
<p>Gerade das klingt doch nach einem Fall für Bitverschiebungen, anstatt Vectorgefrickel. Damit entfallen dann auch Überlegungen zu Endianess, die bei Fragen zu MSB und LSB nichts zu suchen haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496600</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 22 May 2016 22:34:46 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Big-Endian on Mon, 23 May 2016 00:00:39 GMT]]></title><description><![CDATA[<p>Ok, ich dachte .resize() ist die einfachste Variante.</p>
<p>Es ist wohl auch meine Schuld, da ich oft zu wenig Informationen gebe wie mir scheint. Ich versuche die Fragestellung meist auch so geziehlt und knapp wie möglich zu beschreiben. Für meinen Hash-Wert nutze ich eine externe Funktion, die mir über die Parameterliste einen 'unsigned char*' (den Hash) und die Hashgröße zurückliefert. Mittlerweile verpacke ich derartige arrays immer in einen std::vector, da die Handhabung für mich einfacher ist.</p>
<p>Nimms mir bitte nicht übel, falls meine Beschreibungen zu knapp ausfallen (ich meine es ja nicht böse <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="🙄"
    /> )<br />
Jedenfalls vielen Dank, dass ich von dir und den anderen immer Ratschläge bekomme. Ich weiß es zu schätzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496605</guid><dc:creator><![CDATA[SBond]]></dc:creator><pubDate>Mon, 23 May 2016 00:00:39 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Big-Endian on Mon, 23 May 2016 07:09:26 GMT]]></title><description><![CDATA[<p>Normal, sprich meistens, bleibt doch aber die BitOrder erhalten ?</p>
<p>D.h. der Treiber / die Transportschicht &quot;drehen&quot; Dir deine Bits schon richtig, wenn du binärströme bekommst.</p>
<p>Sprich wenn du ein unsigned char mit wert 0x05 über netzwerk von einem intel rechner zu einem Motorola Rechner schickst, wird das ankommende char auf dem Motorola auch 0x05 sein und nicht 0xFA<br />
Das heisst du musst nur die ByteOrder Beachten, bei allen dingen die mehr als 1 byte aufs mal interpretieren muessen.<br />
Dazu sollte man aber auch Systemfunktionen nutzen ... Netwerk order, Host Ordner und so ... naja je nach Anwendungsfall.</p>
<p>Genau so ists oft mit anderen Quellen. Wenn es auf dem &quot;Protokoll&quot; eine Bitorder gibt, dann dreht der Treiber, der byteweise liest, die meist schon so, das Bit 0 da landet wo es hingehört (zielplattform bitorder und bitorder aufm Host).</p>
<p>BitShift gefrickel brauchst doch nur, wenn Protokolle zu interpretieren hasst, wo datentypen hasst die nicht 8bit orientiert sind ....</p>
<p>CAN Bus beim Fzg z.b.<br />
oder man selber IO Pins irgendwo ausliest ^^</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496620</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Mon, 23 May 2016 07:09:26 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu Big-Endian on Mon, 23 May 2016 07:58:57 GMT]]></title><description><![CDATA[<p>Es geht bei Endianess nicht um Bits. Bits gibt es aus Sicht des Programmierers überhaupt nicht, die kleinste adressierbare Einheit sind (per Definition) Bytes. Und wenn man aus diesen Bytes größere Datentypen zusammen setzt, dann ist die Reihenfolge sehr relevant.</p>
<p>Die Bitoperationen arbeiten hingegen mathematisch auf den durch die Bytefolgen repräsentierten Werten. Das heißt, man bekommt auf jeden Fall das richtige Ergebnis, egal wie innendrin die Dinge angeordnet sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2496629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2496629</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 23 May 2016 07:58:57 GMT</pubDate></item></channel></rss>