<?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äre Daten in ein String schreiben]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte binäre Daten verschicken, dazu muss ich diese in ein String reinschreiben. Irgendwie bekomm ich das nicht gebacken. Hab also folgende Varibale:</p>
<pre><code class="language-cpp">char *pBuf;
</code></pre>
<p>in dieser stehen dann die binären Daten, die ich von einer Datei ausgelesen habe (bzw. das ist die Datei nur halt binär).<br />
Genau diese Daten muss ich in einen String schreiben, damit ich es über winsock verschicken kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/157675/binäre-daten-in-ein-string-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 01:04:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157675.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Aug 2006 13:23:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binäre Daten in ein String schreiben on Mon, 28 Aug 2006 13:23:15 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte binäre Daten verschicken, dazu muss ich diese in ein String reinschreiben. Irgendwie bekomm ich das nicht gebacken. Hab also folgende Varibale:</p>
<pre><code class="language-cpp">char *pBuf;
</code></pre>
<p>in dieser stehen dann die binären Daten, die ich von einer Datei ausgelesen habe (bzw. das ist die Datei nur halt binär).<br />
Genau diese Daten muss ich in einen String schreiben, damit ich es über winsock verschicken kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126159</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Mon, 28 Aug 2006 13:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to Binäre Daten in ein String schreiben on Mon, 28 Aug 2006 13:52:15 GMT]]></title><description><![CDATA[<p>Darf ich mal fragen, wieso du 3 Threads aufmachen musst, für eigentlich ein und dasselbe Problem?<br />
Diesen hier, und folgende zwei:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-157636.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-157636.html</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-157641.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-157641.html</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126177</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 28 Aug 2006 13:52:15 GMT</pubDate></item><item><title><![CDATA[Reply to Binäre Daten in ein String schreiben on Tue, 29 Aug 2006 07:26:48 GMT]]></title><description><![CDATA[<p>Ich habe gehofft, das vielleicht mir jemand helfen kann, der vielleicht nur das Problem anders geschildert bekommen muss <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1126571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126571</guid><dc:creator><![CDATA[Twinzz]]></dc:creator><pubDate>Tue, 29 Aug 2006 07:26:48 GMT</pubDate></item><item><title><![CDATA[Reply to Binäre Daten in ein String schreiben on Tue, 05 Sep 2006 19:30:05 GMT]]></title><description><![CDATA[<p>Du musst Sonderzeichen wie 0 in Texte umwandel: z.B. &quot;\x000&quot;</p>
<p>Ich hab dadür zwei Funktionen memtostr und strtomem :</p>
<pre><code>#define	STR_NOMARKS	0x00000001		// Keine Anführungszeichen
#define	STR_REGMODE	0x00000002		// Sezialzeichen sind : \&quot; \\ \n \r

//****************************************************************************
//*
//*		memtostr
//*
//****************************************************************************
// Wandeld einen Memory-Bereich in einen String um
// Zeichen &lt; 32 werden in /x??? umgewandelt
// Len ist die Größe des Mem-Speichers
// Str_max die Größe des Str-Speichers
// Art:	STR_NOMARKS		Keine Anführungszeichen einfügen
//		STR_REGMODE		Sezialzeichen sind : \&quot; \\ \n \r
// Ergibt die Länge des Strings
int _cdecl memtostr(char *Str,int Str_max,const void *Mem,int Len,int Art)
{
int				len=0,gesamt;
unsigned char	byte,*mem=(unsigned char*)Mem;

	gesamt=Str_max;

	if(Art&amp;STR_NOMARKS)				// Am Anfang kein Anfürungs-Zeichen
		{
		Str_max+=2;
		}
	else{
		if(Str_max&gt;=2)				// Am Anfang ein Anfürungs-Zeichen
			{
		   *Str='\&quot;';
			Str_max--;
			Str++;
			}
		}

	while(len&lt;Len)
		{
		if(Str_max&lt;=2)break;
		byte=mem[len];len++;

		if((byte&gt;=32)&amp;&amp;(byte!='\&quot;')&amp;&amp;(byte!='\\'))
			{
			*Str=byte;
			 Str_max--;
			 Str++;
			continue;
			}

		if(Str_max&lt;=4)break;		// Zuwenig freier Speicher ?

 		*Str='\\';
		 Str_max--;
		 Str++;

			if(byte=='\\'){*Str='\\';Str_max--;Str++;continue;}
			if(byte=='\&quot;'){*Str='\&quot;';Str_max--;Str++;continue;}
			if(byte=='\r'){*Str='r' ;Str_max--;Str++;continue;}
			if(byte=='\n'){*Str='n' ;Str_max--;Str++;continue;}

		if(~Art&amp;STR_REGMODE)
			{
			if(byte=='\''){*Str='\'';Str_max--;Str++;continue;}
			if(byte=='\t'){*Str='t' ;Str_max--;Str++;continue;}
			if(byte=='\a'){*Str='a' ;Str_max--;Str++;continue;}
			if(byte=='\b'){*Str='b' ;Str_max--;Str++;continue;}
			if(byte=='\f'){*Str='f' ;Str_max--;Str++;continue;}
			if(byte=='\v'){*Str='v' ;Str_max--;Str++;continue;}
			}

		if(Str_max&lt;=6)break;

		Str[0]='x' ;
		Str[1]='0' ;
		Str[2]=&quot;0123456789ABCDEF&quot;[byte&gt;&gt;  4];
		Str[3]=&quot;0123456789ABCDEF&quot;[byte&amp;0x0F];
		Str+=4;
		Str_max-=4;
		}

	if(Art&amp;STR_NOMARKS)Str_max-=2;
	else{
		if(Str_max&gt;=2)					// Am Ende ein Anfürungs-Zeichen
			{
			*Str='\&quot;';
			 Str_max--;
			 Str++;
			}
		}
	if(Str_max)*Str=0;

return gesamt-Str_max;
}

//*****************************************************************************
//*
//*		strtoc
//*
//*****************************************************************************
//	Wandeld	String in Zeichen um	z.B. &quot;/t&quot; wird zu 9
//	Ergibt das Zeichen
int	_cdecl strtoc(const char *Str,int *Len)
{
int  x;
char zeichen,zahl;

	zeichen=*Str;

	if(zeichen=='\\')
		{
		if(Len)*Len=2;
		   zeichen=Str[1];
 		if(zeichen=='\\')return '\\';
		if(zeichen=='\&quot;')return '\&quot;';
		if(zeichen=='\'')return '\'';
		if(zeichen=='?' )return '?' ;
		if(zeichen=='t' )return '\t';
		if(zeichen=='r' )return '\r';
		if(zeichen=='n' )return '\n';
		if(zeichen=='a' )return '\a';
		if(zeichen=='b' )return '\b';
		if(zeichen=='f' )return '\f';
		if(zeichen=='v' )return '\v';
		if(zeichen=='x' || zeichen=='X')			// Hex-Zahl
			{
			for(zahl=0,x=2;x&lt;5;x++)
				{
					zeichen=Str[x];
				if( zeichen&gt;='a')   zeichen-=32;	// Klein zu Groß
				if((zeichen&lt; '0')||(zeichen&gt;'F'))break;
				if((zeichen&gt; '9')&amp;&amp;(zeichen&lt;'A'))break;

				zeichen-=(zeichen&lt;'A')? '0':'A'-10;	// Wert berechen
				zahl&lt;&lt;=4;							// Zahl berechen
				zahl+=zeichen;
				}
			if(x&gt;=2)
				{
				if(Len)*Len=x;
				return zahl;
				}
			}
		else{										// Oktal Zahl
			for(zahl=0,x=1;x&lt;4;x++)
				{
				   zeichen=Str[x];
				if(zeichen&lt;'0')break;
				if(zeichen&gt;'7')break;

				zahl&lt;&lt;=3;							// Zahl berechen
				zahl+=zeichen-'0';
				}
			if(x&gt;1)
				{
				if(Len)*Len=x;
				return zahl;
				}
			}
		if(Len)*Len=1;
		return '\\';
		}

	if(Len)*Len=1;

return zeichen;
}

//****************************************************************************
//*
//*		strtomem
//*
//****************************************************************************
// Wandeld einen String in einen Memory-Bereich um
// Spezial Zeichen wie // /n /r /b /a /0 /x werden berücksichtigt
// Len ist die maximale Größe des Mem-Speichers
// Fängt Str mit '&quot;' an so werden nur die Zeichen zwischen den
// Anführungszeichen ausgewärtet, ist in Len das Bit 0x40000000 gesetz
// so werden Anführungszeichen nicht berücksichtigt.
// In *Count wird die Anzhal der verarbeiteten Byte aus Str gespeichert
// Ergibt die Länge des Mem-Bereiches
int	_cdecl strtomem (void *Mem,int Len,const char *Str,int *Count)
{
int			anz,len=0,stop=0;
char		zeichen,*mem=(char*)Mem;
const char *anf=Str;

	if(*Str=='\&quot;' &amp;&amp; ~Len&amp;0x40000000)			// Anführungs-Zeichen
		{
		stop=1;Str++;
		}

	Len&amp;=~0x40000000;

	while(len&lt;Len)
		{
			zeichen=*Str;
		if(!zeichen)break;
		if( zeichen=='\&quot;' &amp;&amp; stop ){Str++;break;}
		if( zeichen=='\\')						// Escape Sequenzen
			{
			mem[len]=strtoc(Str,&amp;anz);
			Str+=anz;len++;
			continue;
			}

		mem[len]=zeichen;
		Str++;len++;							// Spezial Zeichen
		}

	if(Count)
		{
		*Count=Str-anf;
		}

return len;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1131826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1131826</guid><dc:creator><![CDATA[AZ]]></dc:creator><pubDate>Tue, 05 Sep 2006 19:30:05 GMT</pubDate></item></channel></rss>