<?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[Bitweises schreiben &#x2F; Lese- und Schreiberoutinen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem:</p>
<p>Ich habe 32-Bit Integer - Werte. Diese möchte ich binär in zwei verschiedene Dateien schreiben, und zwar wie folgt aufgeteilt.<br />
In der ersten Datei soll jeweils die Anzahl der führenden &quot;0&quot;en gespeichert werden, und in die zweite, die verbleibenden Binärzeichen ohne eben diese &quot;0&quot;en.<br />
Ich muss dies leider so trennen, da ich mit der ersten Datei etwas machen muss (ich möchte diese nachher getrennt komprimieren, da diese Zahlen sehr viel gemeinsam haben), und die zweite sollte eben so klein wie möglich gespeichert werden, aber so, daß ich die original Werte wieder herstellen kann, wenn ich auch die erste Datei wieder habe.<br />
Ich suche nun eine Schreibroutine und eine Leseroutine für dieses Problem. Das ich aber froh bin &quot;normale&quot; Dinge in Dateien schreiben zu können und hiervon in der Umsetzung nicht sehr viel Ahnung habe (theoretisch ist das vorgehen klar), wäre ich für Hilfe sehr dankbar.</p>
<p>Florian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182637/bitweises-schreiben-lese-und-schreiberoutinen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 00:22:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182637.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 May 2007 15:31:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bitweises schreiben &#x2F; Lese- und Schreiberoutinen on Sun, 27 May 2007 15:31:08 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem:</p>
<p>Ich habe 32-Bit Integer - Werte. Diese möchte ich binär in zwei verschiedene Dateien schreiben, und zwar wie folgt aufgeteilt.<br />
In der ersten Datei soll jeweils die Anzahl der führenden &quot;0&quot;en gespeichert werden, und in die zweite, die verbleibenden Binärzeichen ohne eben diese &quot;0&quot;en.<br />
Ich muss dies leider so trennen, da ich mit der ersten Datei etwas machen muss (ich möchte diese nachher getrennt komprimieren, da diese Zahlen sehr viel gemeinsam haben), und die zweite sollte eben so klein wie möglich gespeichert werden, aber so, daß ich die original Werte wieder herstellen kann, wenn ich auch die erste Datei wieder habe.<br />
Ich suche nun eine Schreibroutine und eine Leseroutine für dieses Problem. Das ich aber froh bin &quot;normale&quot; Dinge in Dateien schreiben zu können und hiervon in der Umsetzung nicht sehr viel Ahnung habe (theoretisch ist das vorgehen klar), wäre ich für Hilfe sehr dankbar.</p>
<p>Florian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293159</guid><dc:creator><![CDATA[floriank]]></dc:creator><pubDate>Sun, 27 May 2007 15:31:08 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweises schreiben &#x2F; Lese- und Schreiberoutinen on Sun, 27 May 2007 15:39:36 GMT]]></title><description><![CDATA[<p>Bitweise kannst du nicht schreiben. Die kleinste mögliche Einheit entspricht der Größe eines <code>char</code> s.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293162</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Sun, 27 May 2007 15:39:36 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweises schreiben &#x2F; Lese- und Schreiberoutinen on Sun, 27 May 2007 15:52:49 GMT]]></title><description><![CDATA[<p>32-bit-Daten: warum willst du die Nullen speichern - codier die doch sofort.<br />
z.B. 6 führende Nullen = 6.</p>
<p>Aber ich denke die modernen Packalgorithmen haben schon ähnliche Funktionen<br />
implementiert.</p>
<p>Ist dein Problem das Zählen der Nullen? Dann schau dir z.B. Infos über<br />
bitweises verschieben oder maskieren an.</p>
<p>MfG f.-th.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293171</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Sun, 27 May 2007 15:52:49 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweises schreiben &#x2F; Lese- und Schreiberoutinen on Sun, 27 May 2007 18:03:22 GMT]]></title><description><![CDATA[<p>f.-th. schrieb:</p>
<blockquote>
<p>32-bit-Daten: warum willst du die Nullen speichern - codier die doch sofort.<br />
z.B. 6 führende Nullen = 6.</p>
<p>Aber ich denke die modernen Packalgorithmen haben schon ähnliche Funktionen<br />
implementiert.</p>
<p>Ist dein Problem das Zählen der Nullen? Dann schau dir z.B. Infos über<br />
bitweises verschieben oder maskieren an.</p>
<p>MfG f.-th.</p>
</blockquote>
<p>Die Anzahl der Nullen kenne ich und ich speichere natürlich nicht 6 Nullen, sondern die 6, das ist schon klar.</p>
<p>Ich mache momentan folgendes:</p>
<pre><code>int bitdarstellung(char bitmuster[33], unsigned int byte, int msb)
{
int maske = 0x01;
int i = 32;
while( i&gt;=0 ) {
	if( byte &amp; maske )
     bitmuster[i] = '1';
 else
  bitmuster[i] = '0';
 maske = maske &lt;&lt; 1;
 i--;
} // if

return(0);
}

int main(int argc, char* argv[])

bitdarstellung(bitmuster,komp[i], msb);
fwrite(&amp;msb, sizeof(unsigned int), 1 ,dateimsb);
for (l=1; l&lt;=msb; l++)
{
  fwrite(&amp;bitmuster[32-msb+l],1,1,dateirest);
}
</code></pre>
<p>Wobei msb, die Stelle des höchsten von 0 verschiedenen Bits ist, und komp die eigentliche zu speichernde Zahl.</p>
<p>Das Problem ist nur, daß die Datei dateirest nachher größer ist, als die ursprünglichen Zahlen.</p>
<p>Florian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293262</guid><dc:creator><![CDATA[floriank]]></dc:creator><pubDate>Sun, 27 May 2007 18:03:22 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweises schreiben &#x2F; Lese- und Schreiberoutinen on Sun, 27 May 2007 19:04:22 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15261">@floriank</a>:<br />
Klar ist die Datei nachher grösser, du schreibst ja auch statt einem Bit gleich ein Byte.</p>
<p>Guck dir mal die Klassen LowFirstBitReader und LowFirstBitWriter der cryptopp an, vielleicht kannst du die verwenden.<br />
Wenn nicht musst du dir eben selbst was basteln.</p>
<p><a href="http://www.cryptopp.com/" rel="nofollow">http://www.cryptopp.com/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293318</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 27 May 2007 19:04:22 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweises schreiben &#x2F; Lese- und Schreiberoutinen on Mon, 28 May 2007 08:05:05 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Klar ist die Datei nachher grösser, du schreibst ja auch statt einem Bit gleich ein Byte.</p>
<p>Guck dir mal die Klassen LowFirstBitReader und LowFirstBitWriter der cryptopp an, vielleicht kannst du die verwenden.<br />
Wenn nicht musst du dir eben selbst was basteln.</p>
<p><a href="http://www.cryptopp.com/" rel="nofollow">http://www.cryptopp.com/</a></p>
</blockquote>
<p>Danke für den Tipp. Aber kannst du mir sagen wo diese Klassen sind? Ich bin anscheinend zu blöd und finde die einfach nicht. Ich habe mir die letzte Version heruntergeladen, aber kann einfach keine dieser Klassen finden. Vom Namen her sind es aber genau solche Klassen, wie ich sie suche.</p>
<p>Danke<br />
Floriank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293479</guid><dc:creator><![CDATA[floriank]]></dc:creator><pubDate>Mon, 28 May 2007 08:05:05 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweises schreiben &#x2F; Lese- und Schreiberoutinen on Mon, 28 May 2007 22:21:01 GMT]]></title><description><![CDATA[<p>Also Google findet die Klassen sofort <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>
<p><a href="http://www.cryptopp.com/docs/ref/class_low_first_bit_reader.html" rel="nofollow">http://www.cryptopp.com/docs/ref/class_low_first_bit_reader.html</a><br />
<a href="http://www.cryptopp.com/docs/ref/class_low_first_bit_writer.html" rel="nofollow">http://www.cryptopp.com/docs/ref/class_low_first_bit_writer.html</a></p>
<p>Sind in zdeflate.h bzw. zinflate.h zu finden.</p>
<p>p.S.: es gibt IDEs die Klassenlisten anzeigen können und es gibt find in files. nur so ... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1294109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294109</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 28 May 2007 22:21:01 GMT</pubDate></item></channel></rss>