Bonjour,
J'ai plusieurs question de débutant et donc pour être clair je vais éparpiller le temps de parole.
En prime j'ai toujours pas pris le plis de designer les bonnes terminologie aux .. aux heu trucs !
Il y a pas d'application réel je m'écrit quelque chose juste pour m’améliorer ...
Je tente une bidouille sur des variables et je compte bien (oui je compte) utiliser
un unsigned long pour stocker 9 chiffres que je découpe ensuite en unité de 0 à 9,
le tout dans une fonction.
J'utilise un unsigned long plutôt que des bytes puisque je reste sur des chiffres de 0 à 9
et que le "byte" prend 1octet, le "int" 2octet, "unsigned long" 4octet.
9 petits chiffres sur 9 octets, bof ! par contre 9 chiffre sur 4 octet...
Bref, pour une question de place mémoire je gagne bien 50% si je prend en compte le code qui va servir à convertir.
J'ai écrit ceci est-ce que la théorie fonctionne ?
Ou mieux, existe-il mieux ?
Les variables global: unsigned long usage_t[]={} et int ident
int traite_id()
{
// variable unsigned long usage_t[]={164233958,220000000,... etc } :
// int 2 octet, donc seulement (111 à 999)
// char 1 octet (1 à 9)
// unsigned long 4 octet (111 111 111 à 999 999 999) <- gain de place
// ident = 1 à 255, dans l'exemple ident = 4
int tt=0,id,t,result=0; unsigned char nomb[10],chiff[2];
t=sizeof(usage_t); // taille total du tableau pour connaitre la fin !
id=ident; // j'en touche une sans faire bouger l'autre
while(id<9){tt++;id-=9;}; //si id supérieur à 9, donc ajoute 1 à tt et -9 à id
if (tt<=t-1)
{
nomb=char(usage_t[tt]); // ex: d'un nombre a 9 chiffre vers une chaine de 9 caract. 164237958='164237958'
chiff=nomb.charAt(id); // ex: d'une chaine '164237958' je sors le 4ieme partant de gauche = '2'
result=int(chiff); // ex: de '2' j'obtient type 2
};
// par defaut result=0
return (result);
}