<?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[Binärdaten mit Adresse, Hexadezimaler Schreibweise und in ASCII ausgeben]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>So sieht die Ausgangssituation aus:<br />
Ich möchte Dateien beliebiger Größe binär einlesen und in einem CEdit formatiert ausgeben:</p>
<p>Adresse | 8 Bytes in hexadizimaler Schreibweise | Ascii-Wert der 8 Bytes</p>
<p>Das kennen wir ja alle von Hexeditoren. Die Datei wird erfolgreich gelesen und in einem unsigned char * hinterlegt.<br />
Nun will ich sie formatiert ausgeben, packe also alles Stück für Stück mit CEdit::Append bzw CEdit::ApendFormat in das CEdit Feld rein (mehrzeilig).</p>
<p>Das Prob:<br />
Das daaaaaaauuuuert.... ewig... bei einer 128kb Datei sicher 5-10 Sekunden...<br />
Kennt jemand einen besseren/schnelleren weg für so ein Problem? (Ich will die Daten nur anzeigen, nicht verändern)</p>
<p>Ich nutze VS2005 Standard.</p>
<p>mfg</p>
<p>Karotte</p>
<p>Anhang: der Code, der das formatieren übernimmt</p>
<pre><code class="language-cpp">data.AppendFormat(_T(&quot;0x%06X | &quot;), 0);

int n = 0;
for (int i=0; i &lt; length; i++)
{	
	data.AppendFormat(_T(&quot;0x%02X|&quot;), p_Buffer[i]);

	n++;
	if (n == 8)
	{
		data.Append(_T(&quot; &quot;));
		for (int n=i-7; n &lt; i; n++)
		{
			(p_Buffer[n]&gt;31)?data.AppendFormat(_T(&quot;%c&quot;), p_Buffer[n]):data.Append(_T(&quot;.&quot;));
		}

		data.Append(_T(&quot;\r\n&quot;));
		data.AppendFormat(_T(&quot;0x%06X | &quot;), (i+1));
		ctl_progress.StepIt();
		n = 0;
	}

}

m_hex_out = data;
UpdateData(false);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/174832/binärdaten-mit-adresse-hexadezimaler-schreibweise-und-in-ascii-ausgeben</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 06:34:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174832.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 04 Mar 2007 11:41:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binärdaten mit Adresse, Hexadezimaler Schreibweise und in ASCII ausgeben on Sun, 04 Mar 2007 11:41:00 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>So sieht die Ausgangssituation aus:<br />
Ich möchte Dateien beliebiger Größe binär einlesen und in einem CEdit formatiert ausgeben:</p>
<p>Adresse | 8 Bytes in hexadizimaler Schreibweise | Ascii-Wert der 8 Bytes</p>
<p>Das kennen wir ja alle von Hexeditoren. Die Datei wird erfolgreich gelesen und in einem unsigned char * hinterlegt.<br />
Nun will ich sie formatiert ausgeben, packe also alles Stück für Stück mit CEdit::Append bzw CEdit::ApendFormat in das CEdit Feld rein (mehrzeilig).</p>
<p>Das Prob:<br />
Das daaaaaaauuuuert.... ewig... bei einer 128kb Datei sicher 5-10 Sekunden...<br />
Kennt jemand einen besseren/schnelleren weg für so ein Problem? (Ich will die Daten nur anzeigen, nicht verändern)</p>
<p>Ich nutze VS2005 Standard.</p>
<p>mfg</p>
<p>Karotte</p>
<p>Anhang: der Code, der das formatieren übernimmt</p>
<pre><code class="language-cpp">data.AppendFormat(_T(&quot;0x%06X | &quot;), 0);

int n = 0;
for (int i=0; i &lt; length; i++)
{	
	data.AppendFormat(_T(&quot;0x%02X|&quot;), p_Buffer[i]);

	n++;
	if (n == 8)
	{
		data.Append(_T(&quot; &quot;));
		for (int n=i-7; n &lt; i; n++)
		{
			(p_Buffer[n]&gt;31)?data.AppendFormat(_T(&quot;%c&quot;), p_Buffer[n]):data.Append(_T(&quot;.&quot;));
		}

		data.Append(_T(&quot;\r\n&quot;));
		data.AppendFormat(_T(&quot;0x%06X | &quot;), (i+1));
		ctl_progress.StepIt();
		n = 0;
	}

}

m_hex_out = data;
UpdateData(false);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1238863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238863</guid><dc:creator><![CDATA[bw1faeh0]]></dc:creator><pubDate>Sun, 04 Mar 2007 11:41:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten mit Adresse, Hexadezimaler Schreibweise und in ASCII ausgeben on Sun, 04 Mar 2007 13:07:10 GMT]]></title><description><![CDATA[<p>Liest du deine Datei in einem Rutsch ein? oder evtl. zeilenweise oder gar zeichenweise?</p>
<p>Versuchs doch mal mit einem Append. Also erst alles in ein String reinballern incl. Zeilenumbrüchen und dann am Schluss einmal Append.</p>
<p>Evtl. wird nach jedem Append ein OnPaint geschickt (grobe Vermutung), was das ganze sehr langsam machen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238926</guid><dc:creator><![CDATA[Die_Gute_Fee]]></dc:creator><pubDate>Sun, 04 Mar 2007 13:07:10 GMT</pubDate></item><item><title><![CDATA[Reply to Binärdaten mit Adresse, Hexadezimaler Schreibweise und in ASCII ausgeben on Sun, 04 Mar 2007 13:12:31 GMT]]></title><description><![CDATA[<p>ja, ich lese Byte für Byte mit CEdit:ApendFormat().</p>
<p>habe auch schon drüber nachgedacht, das ganze in einem Feld von Bytes schon vorzubereiten, aber ich weiß nicht, ob es schneller geht, wenn ich mit realloc() mein feld ständig vergrößere. und das müsste ich ja, da noch die zusatz informationen wie Adressen, zeilenumbrüche etc. rein müssen.</p>
<p>andere meinungen??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238930</guid><dc:creator><![CDATA[bw1faeh0]]></dc:creator><pubDate>Sun, 04 Mar 2007 13:12:31 GMT</pubDate></item></channel></rss>