[gull] déserialiser une valeur double (ieee 754) avec be64toh

Marc Mongenet marc at mongenet.ch
Sat Mar 3 18:06:16 CET 2012


Le 3 mars 2012 11:54, Philippe Strauss <philippe at strauss-acoustics.ch> a écrit :
>
> par contre t'as tjr besoin d'une union avec un type standard dans le cas de fait du printf dessus ?

Non, c'était juste pour montrer comment les bits sont disposés en mémoire.
Voilà un exemple plus simple.

#include <stdio.h>

struct s {
	unsigned char bf0:1;
	unsigned char bf1:2;
	unsigned char bf2:3;
};


int main(void) {
	struct s s = { 1, 2, 3 };

	printf("%u, %u, %u\n", s.bf0, s.bf1, s.bf2);
	return 0;
}


Note qu'il y a un piège de portabilité comme C aime bien,
lorsqu'on utilise int comme type de bit-field: c'est
l'implémentation qui choisi s'il s'agit d'un signed int
ou d'un unsigned int.

Marc


More information about the gull mailing list