Pamaury
Messages postés341Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention17 juin 2008
-
19 juin 2004 à 12:08
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
19 juin 2004 à 15:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 juin 2004 à 15:35
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és2Date d'inscriptionsamedi 30 novembre 2002StatutMembreDernière intervention19 juin 2004 19 juin 2004 à 15:16
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és2Date d'inscriptionsamedi 30 novembre 2002StatutMembreDernière intervention19 juin 2004 19 juin 2004 à 15:15
excusez moi d'être novice, mé c ma mremière source
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 juin 2004 à 14:57
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.
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z)
{
char buff[36];
IntToBin(13, buff);
MessageBox(0, buff, szappname, 0);
return 0;
}
Pamaury
Messages postés341Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention17 juin 20083 19 juin 2004 à 12:08
je suis peut-être bête mais à quoi cela sert de prendre un int en paramètre et de renvoyer un int et puis en plus, imagine que ton int soit rempli avec la valeur la plus grande possible, ta fonction plantera à cause de l'overflow . Et puis quel est l'intérêt de ce code, donne un exemple d'utilisation parce que là je voit vraiment pas où il peut servir .
19 juin 2004 à 15:35
19 juin 2004 à 15:16
19 juin 2004 à 15:15
19 juin 2004 à 14:57
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"
19 juin 2004 à 14:24
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é...
19 juin 2004 à 12:38
void 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;
}
19 juin 2004 à 12:32
psz[0] = 48; psz[1] = 0; // FINI
19 juin 2004 à 12:26
void IntToBin(int n, char *psz)
{
char *c = psz;
while(!(n & 0x80000000)) n <<= 1;
while(n) {
*c++ = (n & 0x80000000) ? 49: 48;
n <<= 1;
}
*c = 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z)
{
char buff[36];
IntToBin(13, buff);
MessageBox(0, buff, szappname, 0);
return 0;
}
19 juin 2004 à 12:08