Conversion binaire/decimal/hexadecimal - tres simple [djgpp]

Description

Tout le monde fait des fonctions complique pour comparer des nombres avec des puissances de deux mais il y a une maniere beaucoup plus simple avec les unions

Source / Exemple :


#include			<stdio.h>	/* pour printf */
#include			<conio.h>	/* pour getch  */

/*
   Nouveau type de char, il prend exactement la meme place en 
   memoire qu'un vrai char.
   C'est une union donc chaque membre de la structure occupera
   la meme place en memoire.

  • /
typedef union NEWCHAR { unsigned char dec; /* decimal */ struct { bool bit8:1; /* binaire, le :1 */ bool bit7:1; /* signifie que la */ bool bit6:1; /* variable n'intervient */ bool bit5:1; /* que sur un seul bit */ bool bit4:1; /* de la structure */ bool bit3:1; bool bit2:1; bool bit1:1; }; struct { unsigned int hexa2:4; /* hexadecimal, le :4 */ unsigned int hexa1:4; /* pour seulement 4 bits */ }; }; /* les sous-structure de NEWCHAR ne porte pas de nom, ça permet d'acceder a leurs variables comme ci elles appartenaient directement a NEWCHAR et que en meme temps toutes leurs variables n'en valent qu'une seule dans l'union
  • /
int main() { NEWCHAR octet; octet.dec=173; /* octet = 173 */ /* binaire */ printf("binaire : %d%d%d%d%d%d%d%d\n",octet.bit1,octet.bit2,octet.bit3,octet.bit4,octet.bit5,octet.bit6,octet.bit7,octet.bit8); /* hexadecimal */ printf("hexadecimal : "); if (octet.hexa1>9) printf("%c",octet.hexa1+55); else printf("%d",octet.hexa1); if (octet.hexa2>9) printf("%c\n",octet.hexa2+55); else printf("%d\n",octet.hexa2); /* decimal */ printf("decimal : %d",octet.dec); getch(); return 0; }

Conclusion :


voila c'est vraiment pas complique

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.