<?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[Casten von unsigned char to char]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich lese aus eine Bin-File Daten aus und definiere für diese Daten ein struct.</p>
<pre><code>typedef struct BRG {
	unsigned char Blue;
        unsigned char Red;
        unsigned char Green;
};
</code></pre>
<p>Diese Daten werden richtig verspeichert in dem Struct, also wenn ich es mir mit printf ausgeben, steht es genauso dort wie im hex-editor.</p>
<p>Aber wie schreibe ich dieses Struct jetzt wieder in einer Datei? Habe es mit einem Cast zu (char*) versucht, aber das funktioniert nicht, da sind die Daten dann komplett anders!?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238996/casten-von-unsigned-char-to-char</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 15:18:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238996.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 18 Apr 2009 00:23:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Casten von unsigned char to char on Sat, 18 Apr 2009 00:23:51 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich lese aus eine Bin-File Daten aus und definiere für diese Daten ein struct.</p>
<pre><code>typedef struct BRG {
	unsigned char Blue;
        unsigned char Red;
        unsigned char Green;
};
</code></pre>
<p>Diese Daten werden richtig verspeichert in dem Struct, also wenn ich es mir mit printf ausgeben, steht es genauso dort wie im hex-editor.</p>
<p>Aber wie schreibe ich dieses Struct jetzt wieder in einer Datei? Habe es mit einem Cast zu (char*) versucht, aber das funktioniert nicht, da sind die Daten dann komplett anders!?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697599</guid><dc:creator><![CDATA[Dax]]></dc:creator><pubDate>Sat, 18 Apr 2009 00:23:51 GMT</pubDate></item><item><title><![CDATA[Reply to Casten von unsigned char to char on Sat, 18 Apr 2009 08:21:08 GMT]]></title><description><![CDATA[<p>Ich verstehe nicht so richtig, was du erreichen willst, bzw. wie du versuchst dein struct auszugeben. Ein wenig mehr Code wäre nett.</p>
<p>Das struct als gesamtes kannst du nicht einfach so ausgeben (sofern du keine dementsprechenden Operatoren definiert hast). Du musst die Elemente einzelnen über myBRG.Blue etc. ansprechen und ausgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697628</guid><dc:creator><![CDATA[cerotidinon]]></dc:creator><pubDate>Sat, 18 Apr 2009 08:21:08 GMT</pubDate></item><item><title><![CDATA[Reply to Casten von unsigned char to char on Sat, 18 Apr 2009 08:46:29 GMT]]></title><description><![CDATA[<p>Ich habe dieses struct myBRG als Array.</p>
<pre><code>myBRG = new B8R8G8[length];
</code></pre>
<p>z.B.<br />
myBRG[0].Red = 0xFF;<br />
myBRG[0].Green = 0x00;<br />
myBRG[0].Blue = 0x11;<br />
myBRG[1].Red = 0x22;<br />
myBRG[1].Green = 0x0D;<br />
myBRG[1].Blue = 0xD0;</p>
<p>Und das will ich jetzt genauso wie es dort steht in ein File schreiben.</p>
<p>Das File sollte als so aussehen (in de Reihenfolge): FF 00 11 22 0D D0</p>
<pre><code>file.write (myBRG,length);
</code></pre>
<p>geht nicht, deshalb habe ich</p>
<pre><code>file.write ((char*) &amp;myBRG,length);
</code></pre>
<p>versucht. Ich bin mir aber wirklich sicher ob ich damit für alle Fälle sichergestellt habe, dass das struct richtig im File landet (also ohne Bitverschiebungen, richtige Reihenfolge etc.)...oder gibt es da eine bessere Methode?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697635</guid><dc:creator><![CDATA[Dax]]></dc:creator><pubDate>Sat, 18 Apr 2009 08:46:29 GMT</pubDate></item><item><title><![CDATA[Reply to Casten von unsigned char to char on Sat, 18 Apr 2009 09:15:32 GMT]]></title><description><![CDATA[<p>1. In C++ ist das <code>typedef</code> vor dem struct unnötig, sowas wird nur in C verwendet. Es reicht zu schreiben:</p>
<pre><code class="language-cpp">struct RGB
{
  unsigned char red;
  unsigned char green;
  unsigned char blue;
};
</code></pre>
<p>2. Meinst du nicht eher RGB statt BRG? Ich habe jedenfalls noch nie etwas von BRG gehört.<br />
3. Das was du machst, wird wohl Probleme verursachen wegen Padding oder Byte-Reihenfolge. Die Bitdarstellung dagegen sollte keine Probleme machen.<br />
4. Mach es, wie cerotidinon es gesagt hat. Schreib jeden Wert einzeln raus. Falls du sogar nur unsigned char schreibst, gibt es sogar einen kleinen Trick, da man es mit Schablonen zu tun hat im IO Stream Bereich:</p>
<pre><code class="language-cpp">typedef std::basic_ofstream&lt;unsigned char&gt; uofstream;

uofstream file(&quot;file.dat&quot;, std::ios::binary | std::ios::out);

for(int i = 0; i &lt; length; ++i)
{
  file.write(myRGB[i].red, 1);
  file.write(myRGB[i].green, 1);
  file.write(myRGB[i].blue, 1);
}

file.close();
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697641</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 18 Apr 2009 09:15:32 GMT</pubDate></item><item><title><![CDATA[Reply to Casten von unsigned char to char on Sat, 18 Apr 2009 18:12:28 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>1. In C++ ist das <code>typedef</code> vor dem struct unnötig, sowas wird nur in C verwendet. Es reicht zu schreiben:</p>
<pre><code class="language-cpp">struct RGB
{
  unsigned char red;
  unsigned char green;
  unsigned char blue;
};
</code></pre>
</blockquote>
<p>Was ist eigentlich der Unterschied zwischen struct RGB {} und typedef struct {} RGB?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697888</guid><dc:creator><![CDATA[Dax]]></dc:creator><pubDate>Sat, 18 Apr 2009 18:12:28 GMT</pubDate></item><item><title><![CDATA[Reply to Casten von unsigned char to char on Sat, 18 Apr 2009 18:24:50 GMT]]></title><description><![CDATA[<p>Dax schrieb:</p>
<blockquote>
<p>Was ist eigentlich der Unterschied zwischen struct RGB {} und typedef struct {} RGB?</p>
</blockquote>
<p>In C++ ist beides das gleiche, in C allerdings nicht. In C++ wird daher das erstere bevorzugt, in C dagegen das zweitere.</p>
<p>In C ist der Unterschied der folgende:</p>
<pre><code class="language-cpp">/* WARNUNG - C QUELLCODE - WARNUNG */

struct MyNormalStruct
{
};

/* Verwendung: */
struct MyNormalStruct var;
struct MyNormalStruct* pointer = &amp;var;

/*
usw., es muss also immer ein struct davor geschrieben werden in C.
Um dies zu vereinfachen, gibt es allerdings die typedef Syntax.
*/

typedef struct
{
} MyTypedefStruct;

/* Verwendung */
MyTypedefStruct var;
MyTypedefStruct* pointer = &amp;var;

/*
deutlich angenehmer zu verwenden. Wie gesagt, in C++ ist dies unnötig.
*/

/* WARNUNG - C QUELLCODE - WARNUNG */
</code></pre>
<p>Es gibt, glaub ich, noch ein paar Restriktionen, wenn man die <code>typedef</code> Syntax verwendet, kann mich nur gerade nicht mehr daran erinnern, was es war.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697891</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 18 Apr 2009 18:24:50 GMT</pubDate></item></channel></rss>