[App Inventor] Du binaire à l’héxadécimal

 

Le But de l’application :

Convertir le binaire de l’application précédente en héxadécimal

Moyen mis en oeuvre pour ce tutoriel:

-Utilisation des procédures
-utilisation des “ifelses” (et oui encore)
-Utilisation de (beaucoup) de listes et de variables.

1) Prérequis :

-Avoir fait le tuto précédent sur le binaire (sinon télécharger de code source ici)

2) Objectif :
Avec notre liste Bits faite dans le précédent tuto, afficher le nombre hexadécimal du nombre décimal entré par l’utilisateur dans la hint box.

3) La structure dans App Inventor :

Voila le screenshot plus de précision en-dessous
Source : Image LP2I

Le Tableau suivant montre les objets à rajouter au projet binaire.

Objet Nom Propriétés
Label HexaResultLabel Width=Fill parent
TextAlignement=center
Label Label3 Width=Fill parent
TextAlignement=center
Text=Hexadécimal :

4) La Structure dans le bloc editor

4.1 Les variables en + :

Nom de la variable Type Contenu Description
HexBit number 0 Valeur du bit (0,1,2,4,8)
HexChiffre number 0 Valeur du paquet de 4 bits (0,1,2…,E,F)
HexNombre text Text vide Nombre final (ex:A2F1)

Voila les variables à rajouter dans le bloc editor voici le résultat :

Source : LP2I

Une fois les variables définies, les listes !

4.2 Les listes en +

Nom de la liste Contenu Description
Hexa (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) Les valeurs de l’hexadécimal
AddIndex (0,4,8,12) Nombre de bits pour passer d’un paquet de bits à l’autre.
ValeurBits (1,2,4,8) Valeur que peut prendre un bit (sans le zéro)

Je reviendrais sur ces listes au moment de leurs utilisation (notamment AddIndex).
Une image de vérification pour la route :

Source : LP2I

Une fois toutes les variables et listes définies passons au programme !

4.3 Une nouvelle structuration avec les procédures :

Comme le programme commençais à toucher le sol j’ai décider de le décomposer et pour cela il existe un outils très pratique : le bloc procédure !
On va donc créer 3 procédure :
-16 bits
-8bits
-et 4 bits
On va donc déplacer le programme pour 16 bits dans la procédure 16 bits et on va appeler la procédure à la place :

On va donc pouvoir travailler sur la procédure 16 bits sans changer la fonction “ButtonConversion.Clik”

4.4 La Syntaxe de la conversion

On va faire une première boucle qui va tester 1 par 1 les 4 bits de chaque paquet pour savoir si le bit à la valeur 1 ou 0:
Si on a 1 (donc un ifelse et oui encore) on va déterminer sa position dans les quatre bits et on va assigner à HexBit la valeur 1,2,4 ou 8 en fonction de celle-ci
Si on a 0 on va juste assigner à HexBit la valeur 0

On va faire un deuxième boucle entourant la première qui va l’exécuter 4 fois pour chercher le nombre hexadécimal de chaque paquet.

Voila la boucle explication plus bas :

Voila la procédure de conversion en entier l’explication est juste en-dessous.
Source : Image LP2I

Valeur des cycles des boucles et placement de celle-ci et du ifelse

On a bien les deux boucles imbriqués l’une dans l’autre avec un ifelse dans la deuxième.
Les deux boucles on le même nombre de cycles : de 1 à 4 (j’ai pris 1 comme valeur de départ pour ne pas avoir de +1 partout après)

Test du ifelse

On va tester dans la liste Bits si le bit lu est égal à 1.
Pour cela on va chercher la valeur d’index à ajouter dans la liste AddIndex par rapport au cycle de la grande boucle et on lui ajoute la valeur de la petite boucle: ex : on ce place dans le cas du test du bit 13 on est donc au paquet 4 la valeur du cycle de la grande boucle est 4 donc on va chercher dans la liste AddIndex la valeur 12 on lui ajoute sa position dans le paquet (la première ici donc 1) et on a la position du bit.

Vert : valeur de cycle de la grande boucle dans la liste AddIndex
Bleu : valeur de cycle de la petite boucle
Source : Image LP2I

Assignation de la valeur du bit

Si le bit testé est égal à 1 on va assigner à HexBit sa valeur par rapport à sa position.
Si le bit testé est égal à 0 on va assigner 0 à HexBit dans le esle-do.

Fin du ifelse

On va donc ajouter la valeur du bit à HexChiffre puis on remet HexBit à 0

L’assemblage du nombre hexadécimal

En dehors de la petite boucle (mais toujours dans la grande ) on va chercher le chiffre hexadécimal correspondant au chiffre trouvé à la fin de la petite boucle et on va l’ajouter à HexNombre pour former le nombre hexadécimal final comme-ceci :

On remet ensuite HexChiffre à 0 pour le prochain paquet.
Source : Image LP2I

L’affichage du nombre

Une fois le nombre final stocké il ne nous reste plus qu’a l’afficher (en dehors des deux boucles) avec “set HexaResultLabel”.

Je met le code source pour ceux qui voudrai jeter un coup d’oeil :
Hexadécimal
Et l’apk pour ceux qui veulent leur convertisseur :
Hexadecimal apk
/!\ Il faut appuyer 2 fois sur le bouton convertir pour avoir un nombre juste /!\