Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| convertisseur decimal -> hexadecimal | |
| | Auteur | Message |
---|
Tengaal
Nombre de messages : 13 Age : 50 Localisation : France Date d'inscription : 12/01/2010
| Sujet: convertisseur decimal -> hexadecimal Mar 12 Jan 2010 - 18:37 | |
| Bonjour à tous ! Je suis un petit nouveau sur ce forum, (mais 36 ans quand même ! ) et j'ai découvert Panoramic il y a quelques jours, par hasard sur le web, et j'accroche bien ! je suis développeur/infographiste spécialisé en production 3D ( www.3dweave.com), je connais donc différents langages de programmation (Delphi, C++, langages scripts divers, Java, etc...) et j'ai beaucoup de plaisir à utiliser Panoramic pour tester de petit bouts de code rapidement, avec un éditeur hyper léger, utilisable de façon "nomade" sur n'importe quel machine. Bref, pour mon arrivée ici, je donne un petit script qui est un simple convertisseur décimal vers hexadécimal. Dans mon script, je n'ai pas ajouté de système de test pour vérifier si la valeur entrée par l'utilisateur est correcte ou pas (pas de texte, pas de champ vide, pas de valeur supérieure à 16777215) Ce convertisseur génère donc un nombre hexadecimal formatté sur 6 caractères, soit une valeur de 000000 à FFFFFF (soit 16777215 en décimal). Pour traiter des valeurs supérieures c'est très simple en lisant le script, on comprend la méthode. Avec cette méthode on peut aller bien au-delà... Quelques explications : On commence par la caractère qui se trouve le plus à gauche de la valeur hexa finale,pour cela on divise la valeur décimale par 1048576 (soit en hexa 100000), on en prend que la valeur entière, ce qui nous donne la valeur du 1er caractère hexa à traiter, donc une valeur entre 0 et 15. si cette valeur est inférieure à 10, alors le caractère hexa est une simple conversion de la valeur, si la valeur est supérieure à 9 alors elle doit être converti en caractère de A (10) à F (15). Pour cela j'utilise simplement la table ASCII dont le code chr$(65) est "A", donc si b=12, alors on lui soustrait 10, ce qui donne 2, que l'on additionne à 65, ce qui donne chr$(67) soit "C". une fois ce caractère traité on passe au suivant (2e caractère). Pour cela, on ne garde de la valeur décimale initiale que le reste de la division par 1048576. Et on refait ensuite la même chose à partir de cette nouvelle valeur à convertir, cette fois en la divisant par 65536 (soit en hexa 10000), etc... on réalise donc 6 conversions de cette façon, pour générer nos 6 caractère qui vont composer la valeur hexadecimale. Voici le script : - Citation :
- dim h1$,h2$,h3$,h4$,h5$,h6$
dim v$,b,c,d
label On_Click_Button_3 left 0,463 top 0,355 width 0,188 height 0,154 caption 0,"Dec -> Hex" edit 1 left 1,28 top 1,19 text 1,"12345678" : rem valeur 0 à 16777215
button 3 left 3,50 top 3,49 caption 3,"Convertir" on_click 3,On_Click_Button_3
edit 2 left 2,30 top 2,81 text 2,"Résultat..." : rem valeur 000000 à FFFFFF
end
rem quand on clic sur le bouton "Convertir" On_Click_Button_3:
v$=text$(1): rem on lit le contenu texte de "Edit 1" d=val(v$): rem on converti le contenu en valuer decimale rem CONVERTISSEUR DECIMAL -> HEXADECIMAL ----------------- c=d : rem on copie la valeur dans "c" pour conserver "d".
rem 1er caractere de la valeur Hexa b=int(c/1048576): h1$=str$(b): if (b>9) then h1$=chr$(b-10+65): rem "A" à "F"
rem 2e caractere de la valeur Hexa c=c-b*1048576 b=int(c/65536): h2$=str$(b): if (b>9) then h2$=chr$(b-10+65): rem "A" à "F"
rem 3e caractere de la valeur Hexa c=c-b*65536 b=int(c/4096): h3$=str$(b): if (b>9) then h3$=chr$(b-10+65): rem "A" à "F"
rem 4e caractere de la valeur Hexa c=c-b*4096 b=int(c/256): h4$=str$(b): if (b>9) then h4$=chr$(b-10+65): rem "A" à "F"
rem 5e caractere de la valeur Hexa c=c-b*256 b=int(c/16): h5$=str$(b): if (b>9) then h5$=chr$(b-10+65): rem "A" à "F"
rem 6e caractere de la valeur Hexa b=c-b*16: h6$=str$(b): if (b>9) then h6$=chr$(b-10+65): rem "A" à "F"
rem on inscrit la valeur hexa sur 6 caracteres dans "Edit 2" text 2,h1$+h2$+h3$+h4$+h5$+h6$ return Tengaal. Infographiste/developpeur/formateur 3D pour 3D Weave et son site d'images 3D Pixs
Dernière édition par Tengaal le Mar 12 Jan 2010 - 19:32, édité 2 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: convertisseur decimal -> hexadecimal Mar 12 Jan 2010 - 18:45 | |
| | |
| | | Tengaal
Nombre de messages : 13 Age : 50 Localisation : France Date d'inscription : 12/01/2010
| Sujet: Re: convertisseur decimal -> hexadecimal Mar 12 Jan 2010 - 18:53 | |
| Dans pas mal de mes codes j'ai souvent eu à devoir effectuer des conversions de types, donc c'est le genre de petit bout de code qui est toujours pratique à avoir sous le coude. Idem pour le travail sur les valeurs en binaires, ça fait parti des manipulations de valeurs intéressantes à utiliser... Je pense que je vais avoir un paquet de choses à venir poster ici ! EDIT: oui j'avais vu ton script de conversion d'octet lu en hexa.
Dernière édition par Tengaal le Mar 12 Jan 2010 - 19:43, édité 2 fois | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: convertisseur decimal -> hexadecimal Mar 12 Jan 2010 - 19:01 | |
| - Citation :
- Je pense que je vais avoir un paquet de choses à venir poster ici !
Bienvenue, et n'hésites surtout pas à partager tes codes avec la communauté PANORAMIC ! Plus la logithèque sera importante et plus ce langage attirera du monde. Bienvenue pour une grande et longue aventure avec PANORAMIC | |
| | | Tengaal
Nombre de messages : 13 Age : 50 Localisation : France Date d'inscription : 12/01/2010
| Sujet: Re: convertisseur decimal -> hexadecimal Mar 12 Jan 2010 - 19:12 | |
| merci pour l'accueil ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: convertisseur decimal -> hexadecimal Mar 12 Jan 2010 - 21:04 | |
| Je précise que mon sous-programme cité plus haut ne convertit pas seulement un octet, mais une valeur quelconque, et il suffit de préciser en entrée la taille du résultat rendu en Hexa.
Tu as raison, c'est toujours intéressant d'avoir une collection (bibliothèque) de petits sous-programmes de conversion ou autres, pour ne pas réinventer la poudre à chaque fois. | |
| | | Tengaal
Nombre de messages : 13 Age : 50 Localisation : France Date d'inscription : 12/01/2010
| Sujet: Re: convertisseur decimal -> hexadecimal Mar 12 Jan 2010 - 21:39 | |
| En effet, ton algorithme de conversion hexa est une méthode bien différente de la mienne, c'est ça que j'aime en programmation: on a des données de départ, on sait ce qu'on veut obtenir à l'arrivée, et entre les deux, il y a toujours plusieurs façons de développer le lien ! | |
| | | Invité Invité
| Sujet: Re: convertisseur decimal -> hexadecimal Mar 12 Jan 2010 - 22:22 | |
| Super ton code Tengaal ! JL35 à raison de dire : - Citation :
- enfin quelqu'un qui s'intéresse à l'hexadécimal...
Pour que si on entre du texte ou une valeur trop longue j'ai rajouté un bout de code. Je suppose que Tengaal là fait aussi. - Code:
-
dim h1$,h2$,h3$,h4$,h5$,h6$ dim v$,b,c,d
label On_Click_Button_3 left 0,463 top 0,355 width 0,188 height 0,154 caption 0,"Dec -> Hex"
edit 1 left 1,28 top 1,19 text 1,"12345678" : rem valeur 0 à 16777215
button 3 left 3,50 top 3,49 caption 3,"Convertir" on_click 3,On_Click_Button_3
edit 2 left 2,30 top 2,81 text 2,"Résultat..." : rem valeur 000000 à FFFFFF
end
rem quand on clic sur le bouton "Convertir" On_Click_Button_3: rem vérification if numeric(text$(1))=0 then message "Le texte n'est pas accepté !":text 1,"12345678":return if (len(text$(1))<1) then message "Erreur ! ":text 1,"12345678":return if (len(text$(1))>9) then message "Erreur ! ":text 1,"12345678":return
v$=text$(1): rem on lit le contenu texte de "Edit 1" d=val(v$): rem on converti le contenu en valuer decimale
rem CONVERTISSEUR DECIMAL -> HEXADECIMAL ----------------- c=d : rem on copie la valeur dans "c" pour conserver "d".
rem 1er caractere de la valeur Hexa b=int(c/1048576): h1$=str$(b): if (b>9) then h1$=chr$(b-10+65): rem "A" à "F"
rem 2e caractere de la valeur Hexa c=c-b*1048576 b=int(c/65536): h2$=str$(b): if (b>9) then h2$=chr$(b-10+65): rem "A" à "F"
rem 3e caractere de la valeur Hexa c=c-b*65536 b=int(c/4096): h3$=str$(b): if (b>9) then h3$=chr$(b-10+65): rem "A" à "F"
rem 4e caractere de la valeur Hexa c=c-b*4096 b=int(c/256): h4$=str$(b): if (b>9) then h4$=chr$(b-10+65): rem "A" à "F"
rem 5e caractere de la valeur Hexa c=c-b*256 b=int(c/16): h5$=str$(b): if (b>9) then h5$=chr$(b-10+65): rem "A" à "F"
rem 6e caractere de la valeur Hexa b=c-b*16: h6$=str$(b): if (b>9) then h6$=chr$(b-10+65): rem "A" à "F"
rem on inscrit la valeur hexa sur 6 caracteres dans "Edit 2" text 2,h1$+h2$+h3$+h4$+h5$+h6$ return P.S : Moi je ne me suis jamais intéresser à l'hexadécimal. Et Tengaal c'était une truc de citation que tu as mit et non un truc de code. Pas grave tout le monde fait des erreurs. |
| | | Tengaal
Nombre de messages : 13 Age : 50 Localisation : France Date d'inscription : 12/01/2010
| Sujet: Re: convertisseur decimal -> hexadecimal Mar 12 Jan 2010 - 22:36 | |
| ah oui, j'ai l'habitude sur les forums de mettre les scripts et autres infos avec des balises "citation"... c'est quoi la différence entre les balise "citation" et les balise "code" ? je vois que c'est la même chose, le script est affiché dans un encadré blanc dans les 2 cas, sinon il y a juste le non de l'entête qui change, non ? mais bon la prochaine fois je ferais attention, pas de soucis ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: convertisseur decimal -> hexadecimal Mar 12 Jan 2010 - 22:59 | |
| Oui, finalement la balise Citer est plus compacte mais presque plus lisible que la balise Code, les caractères sont plus foncés. Simplement la police n'est pas fixe, et ça c'est moins bien. | |
| | | Contenu sponsorisé
| Sujet: Re: convertisseur decimal -> hexadecimal | |
| |
| | | | convertisseur decimal -> hexadecimal | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |