Example #1
0
void FileIO::putFixedString(CString data)
{
	// Ici c'est compliqué, mais c'est de la faute à CSharp, qui compresse la grosseur du string wtf lol
	// Faut faire l'inverse de sque jai trouvé plus haut
	struct typ_prefixByte
	{
		unsigned int len : 7;
		unsigned int encoded : 1;

		// Constructor
		typ_prefixByte()
		{
			len = 0;
			encoded = 0;
		}
	} prefix;

	// On pogne son len d'abords
	int len = data.len();

	// On pogne seuleument les 7 premier bit (127 en decimal ;))
	prefix.len = len & 0x7F;
	len = len >> 7;
	if (len > 0) prefix.encoded = 1;
	put(*((unsigned char*)(&prefix)));

	// Tant qu'on est plus grand que 0 on l'encode
	while (len > 0)
	{
		prefix.len = len & 0x7F;
		len = len >> 7;
		if (len > 0) prefix.encoded = 1;
		else prefix.encoded = 0;
		put(*((unsigned char*)(&prefix)));
	}

	// Finalement, on put le string
	put(data.s, data.len());
}
Example #2
0
void FileIO::put(CString data)
{
	put(data.s, data.len() + 1);
}