<?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[Ein 16bit unsigned short Wert oder ein char-Zeichen in Integer umwandeln]]></title><description><![CDATA[<p>Hallo,<br />
ich lese über zwei Varianten eine Binärdatei ein. Einmal mit der get-Methode und ifstream in ein char Array</p>
<pre><code>…
bindat.open(m_txt_binFile, ios::in | ios::binary);
if (bindat)
	{
		i=0;
		while (bindat.good())
		{
			if (i &lt; 500000)
			{
				bindat.get(daten[i++]);
			}
…
</code></pre>
<p>und einmal mit fread in ein unsigned short Array.</p>
<pre><code>…
// open file read-only and binary
if((hFile = fopen(szFile,&quot;rb&quot;)) == NULL){
   	MessageBox(&quot;Quelldatei kann nicht geöffnet werden!&quot;, &quot;Fehler&quot;, MB_OK);
}
else{
	// read 16-bit values into array
      	fread(buffer, sizeof(short), FileSize+4, hFile);

…
</code></pre>
<p>Nun habe ich folgendes Problem:<br />
Ich möchte in einem der zwei Arrays (egal in welchem) drei Felder zusammenfügen und in einen Integer Wert umwandeln.</p>
<p>So habe ich es z.B. versucht:</p>
<pre><code>char test[4];
test[0] = daten[245];	//daten[245] = F9
test[1] = daten[246];	//daten[246] = 8D
test[2] = daten[247];	//daten[247] = A4
test[3] = 0;

int x = atoi(test);	//jetzt müßte 16354724(F98DA4 hex) herauskommen.
</code></pre>
<p>Keine Ahnung was ich hier falsch mache. Hab jetzt schon so einen dicken Kopf, dass ich nicht weiterkomme.</p>
<p>und so:</p>
<pre><code>unsigned short test = buffer[150];
test += buffer[151];
</code></pre>
<p>Mir ist klar das ich ein falsches Ergebnis bekomme wenn ich die Felder addiere, aber wie bekomme ich es richtig hin?</p>
<p>Kann mir bitte jemand helfen bevor mein Kopf explodiert bzw. mein PC aus dem Fenster fliegt? <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>Ach und wenn ich schon dabei bin:<br />
Wie kann ich ganz einfach überprüfen, dass ein Pfad existiert?<br />
z.B.: char pfad[30] = &quot;C:\temp\test1\</p>
<p>Ich Danke euch schon einmal im Voraus für eure Hilfe.</p>
<p>Gruß Zizou</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187840/ein-16bit-unsigned-short-wert-oder-ein-char-zeichen-in-integer-umwandeln</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 12:43:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187840.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Jul 2007 14:57:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ein 16bit unsigned short Wert oder ein char-Zeichen in Integer umwandeln on Tue, 24 Jul 2007 14:57:17 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich lese über zwei Varianten eine Binärdatei ein. Einmal mit der get-Methode und ifstream in ein char Array</p>
<pre><code>…
bindat.open(m_txt_binFile, ios::in | ios::binary);
if (bindat)
	{
		i=0;
		while (bindat.good())
		{
			if (i &lt; 500000)
			{
				bindat.get(daten[i++]);
			}
…
</code></pre>
<p>und einmal mit fread in ein unsigned short Array.</p>
<pre><code>…
// open file read-only and binary
if((hFile = fopen(szFile,&quot;rb&quot;)) == NULL){
   	MessageBox(&quot;Quelldatei kann nicht geöffnet werden!&quot;, &quot;Fehler&quot;, MB_OK);
}
else{
	// read 16-bit values into array
      	fread(buffer, sizeof(short), FileSize+4, hFile);

…
</code></pre>
<p>Nun habe ich folgendes Problem:<br />
Ich möchte in einem der zwei Arrays (egal in welchem) drei Felder zusammenfügen und in einen Integer Wert umwandeln.</p>
<p>So habe ich es z.B. versucht:</p>
<pre><code>char test[4];
test[0] = daten[245];	//daten[245] = F9
test[1] = daten[246];	//daten[246] = 8D
test[2] = daten[247];	//daten[247] = A4
test[3] = 0;

int x = atoi(test);	//jetzt müßte 16354724(F98DA4 hex) herauskommen.
</code></pre>
<p>Keine Ahnung was ich hier falsch mache. Hab jetzt schon so einen dicken Kopf, dass ich nicht weiterkomme.</p>
<p>und so:</p>
<pre><code>unsigned short test = buffer[150];
test += buffer[151];
</code></pre>
<p>Mir ist klar das ich ein falsches Ergebnis bekomme wenn ich die Felder addiere, aber wie bekomme ich es richtig hin?</p>
<p>Kann mir bitte jemand helfen bevor mein Kopf explodiert bzw. mein PC aus dem Fenster fliegt? <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>Ach und wenn ich schon dabei bin:<br />
Wie kann ich ganz einfach überprüfen, dass ein Pfad existiert?<br />
z.B.: char pfad[30] = &quot;C:\temp\test1\</p>
<p>Ich Danke euch schon einmal im Voraus für eure Hilfe.</p>
<p>Gruß Zizou</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331645</guid><dc:creator><![CDATA[Zizou]]></dc:creator><pubDate>Tue, 24 Jul 2007 14:57:17 GMT</pubDate></item><item><title><![CDATA[Reply to Ein 16bit unsigned short Wert oder ein char-Zeichen in Integer umwandeln on Tue, 24 Jul 2007 15:35:07 GMT]]></title><description><![CDATA[<p>Du mußt die einzelnen Teilstücke auch mit Bit-Arithmetik zusammenschieben:</p>
<pre><code class="language-cpp">x = test[0]&lt;&lt;16 | test[1]&lt;&lt;8 | test[0]; //char-Variante
x = test[0]&lt;&lt;16 | test[1]; //short-Variante
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1331665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331665</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 24 Jul 2007 15:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to Ein 16bit unsigned short Wert oder ein char-Zeichen in Integer umwandeln on Wed, 25 Jul 2007 15:40:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ooooh Mann! da hätte ich auch selber drauf kommen können.<br />
Ist ja logisch.</p>
<p>Danke</p>
<p>Gruß Zizou</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332423</guid><dc:creator><![CDATA[Zizou]]></dc:creator><pubDate>Wed, 25 Jul 2007 15:40:45 GMT</pubDate></item></channel></rss>