Conversion décimal/binaire

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 988 fois - Téléchargée 28 fois

Contenu du snippet

J'ai eu beau regarder les codes de conversion décimal/binaire, je n'en ai trouvé aucun qui m'intéressait. donc je l'ai fait moi même.
ATTENTION !!! il s'agit juste de la fonction de conversion, il n'y a aucun programme.

Source / Exemple :


void dec2bin(int dec){
	int bina,n,i,j,tmp;
	tmp=dec;
	n=1;i=1;
	while (tmp>=1){
	bina+=n*(tmp%2);
	tmp=floor(tmp/2);
	i++;
	n*=10;
	}
	return bina;
	//pour ceux qui le voudraient en char
	//char *binair;
	//binair=new char[i];
	//n=1;
	//for (j=0;j<=i;j++){
	//	if(n*(dec%2)==0)
	//		binair[j]='0';
	//	else
	//		binair[j]='1';
	//}
}

Conclusion :


Pour ceux qui chercheraient, le % sert à calculer le modulo. j'avais fait une fonction qui le calculait au départ jusqu'à ce que je découvre le %(que je trouve bien pratique)

Pour ceux qui veulent bina en char, il suffit de décommenter les dernières liqnes.

A voir également

Ajouter un commentaire

Commentaires

BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
neonp > faut oublier TOTALEMENT ce que tu as vu en VB et ne JAMAIS chercher a traduire un code VB en C. Il faut penser en C, j'entends par la qu'on accede direct a la memoire donc utiliser des pointeurs, c'est ainsi que tu auras un code performant sinon autant rester VB.
neonp
Messages postés
2
Date d'inscription
samedi 30 novembre 2002
Statut
Membre
Dernière intervention
19 juin 2004
-
Pamaury, personnellement, je me sert de cette fonction dans un prog de cryptage. je l'avais fais en visual basic et j'essaie de le passer en c
neonp
Messages postés
2
Date d'inscription
samedi 30 novembre 2002
Statut
Membre
Dernière intervention
19 juin 2004
-
excusez moi d'être novice, mé c ma mremière source
BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
c'est si 'pas tres terrible' que ne passera pas la journee si pas arrange en un code correct.

Pendant qu'on a le pointeur sur fin d'ecriture, retournon le, evitera des strcat si besoin de chainage. J'ai verifie, compilo (VS 2003) sort un code optimal, aucun param sur pile, il passe en registres.

char* __stdcall IntToBin(int n, char *psz)
{
if(!n) *psz++ = 48;
else {
while(!(n & 0x80000000)) n <<= 1;
while(n) {
*psz++ = (n & 0x80000000) ? 49: 48;
n <<= 1;
}
}
*psz = 0;
return psz;
}

permet de faire par exemple:
strcpy(IntToBin(147, szbuff), " YOUPI");
sort bien "10010011 YOUPI"
Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
54 -
Même si BruNews a proposé mieux (ba oui, c'est BruNews !)

du haut de mon peu d'experience en C (je m'y met ;))
je suis pas sur que ta fonction

//char *binair;
//binair=new char[i];
//n=1;
//for (j=1;j<=i;j++){
// if(n*(dec%2)==0)
// binair[j]="0";
// else
// binair[j]="1";
//}

soit très terrible...

for (j=1;j<=i;j++){ -> tu commences pas au caractère 0, toi ?
binair[j]="0"; -> binair[j]='0'; me semble plus approprié...

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.