Recherche algo de la fonction ulltoa() [Résolu]

Signaler
Messages postés
8
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
8 septembre 2004
-
Messages postés
8
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
8 septembre 2004
-
Actuellement, je développe sur VC7 et je travail beaucoup avec des __int64. Le problème est que la fonction ulltoa() n'a pas l'air d'exister.

Bien entendu, je ne cherche pas a utiliser sprintf car ce que je cherche avant tout c'est l'algorithme de cette fonction pour savoir comment ça fonctionne...

Si quelqu'un pourrai me donner l'algo de cette fonction pour que je puisse l'étudier, ce serai sympa. (si c'est en assembleur, c'est encore mieux)

merci d'avance :)

4 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Pour convertir les __int64 tu as _i64toa() et pour les unsigned __int64 tu as _ui64toa().
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
tu peux partir du itoa de k&r


void itoa(int n, char s[])
{
int i, sign;

if((sign = n ) < 0)	/* record sign */
n=-n;		/* make n >0   */
i=0;
do {		/*generate digits in reverse order */
s[i++] = n % 10 + '0';	/* get next digit */
} while ((n /= 10) > 0);		/* delete it */
if (sign < 0 )
s[i++] = '-';
s[i] = '\0';
reverse(s);
}

void reverse(char s[])
{
int c,i,j;
for(i=0,j=strlen(s)-1; i < j; i++,j--) {
c=s[i];
s[i]=s[j];
s[j]=c;
}
}

Messages postés
231
Date d'inscription
mercredi 12 février 2003
Statut
Membre
Dernière intervention
7 juillet 2009

La fonction de BruNews pourra t-être utile:
__declspec(naked) char* __fastcall bnultoa(unsigned int dwnum, char* szdst) 
{ 
  __asm {
    or       ecx, ecx
    jnz      short L1
    lea      eax, [edx+1]
    mov      byte ptr[edx], 48
    mov      byte ptr[eax], cl
    ret      0
 L1:
    mov      [esp-4], edi
    mov      [esp-8], edx
    mov      edi, edx
 L2:
    mov      eax, -858993459
    mul      ecx
    mov      eax, edx
    shr      eax, 3
    mov      edx, ecx
    lea      ecx, [eax+eax*8]
    add      ecx, eax
    sub      edx, ecx
    add      dl, 48
    mov      [edi], dl
    mov      ecx, eax
    inc      edi
    test     eax, eax
    jnz      short L2
    mov      byte ptr[edi], al
    mov      [esp-12], edi
    mov      eax, [esp-8]
 L3:
    dec      edi
    mov      dl, [eax]
    mov      cl, [edi]
    mov      [edi], dl
    mov      [eax], cl
    inc      eax
    cmp      eax, edi
    jb       short L3
    mov      eax, [esp-12]
    mov      edi, [esp-4]
    ret      0
  }
}
Messages postés
8
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
8 septembre 2004

Merci aardman!

Hades53> J'avais deja trouvé ce code dans plusieur sources mais merci tout de meme