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 |
|
|
| conversion héxa en décimal | |
| | Auteur | Message |
---|
papyx
Nombre de messages : 50 Age : 79 Localisation : hénin-beaumont(62) Date d'inscription : 04/09/2010
| Sujet: conversion héxa en décimal Sam 2 Oct 2010 - 13:32 | |
| Bonjour Est-ce qu'il y-a une instruction qui permet de faire cette conversion? Et inversement. j'ai trouvé , ne pas tenir compte de ce message (je sais pas l'annuler) | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: conversion héxa en décimal Sam 2 Oct 2010 - 21:33 | |
| Je sais que tu as trouvé, mais juste pour s'amuser, une conversion d'un nombre décimal en hexa (faite par Panoramic): - Code:
-
DIM n, h$, fh$ fh$ = "C:\cvh.hex"
n = 2329573: ' par exemple ... h$ = "" REPEAT: h$ = CHR$(BIN_AND(n, 255)) + h$: n = INT(n/256): UNTIL n = 0 FILE_OPEN_WRITE 1, fh$: FILE_WRITE 1, h$: FILE_CLOSE 1 FILEBIN_OPEN_READ 1, fh$: FILEBIN_HEXA_READ 1, FILEBIN_SIZE(1), h$: FILEBIN_CLOSE 1 FILE_DELETE fh$ PRINT h$ END Bon, d'accord, c'est un peu tordu, mais pourquoi faire simple quand on peut faire compliqué ? Et en plus, ça marche ! Ne tirez pas, je me cache | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Sam 2 Oct 2010 - 23:43 | |
| Moi, je trouve la méthode plutôt géniale ! Sans blague (pour une fois) ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: conversion héxa en décimal Dim 3 Oct 2010 - 0:03 | |
| Disons que c'est marrant, mais tout de même, deux accès disque avec création d'un fichier pour convertir un seul nombre... il y a des méthodes plus économiques (voir dans les archives). C'était juste un petit exercice de style Allez, | |
| | | d.j.peters
Nombre de messages : 77 Age : 60 Localisation : Germany Date d'inscription : 31/07/2010
| Sujet: Re: conversion héxa en décimal Dim 3 Oct 2010 - 11:08 | |
| DEC,BIN,HEX - Code:
-
label Value
dim i%,l% dim Numbers$:Numbers$ = "123456789ABCDEF"
dim v$,v%,basis$,basis%
v$ = "20":gosub Value:print str$(v%) v$ = "&H2FA":gosub Value:print str$(v%) v$ = "0x1ff":gosub Value:print str$(v%) v$ = "&B11010101":gosub Value:print str$(v%)
end
' convert string number to decimal ' input: v$ (dec,hex,bin) ' output: v% (dec%) Value: v% = 0 l% = len(v$) if l% = 0 then return v$ = upper$(v$) Basis$ = left$(v$,2) ' BASIC and C hex if Basis$ ="&H" or Basis$ = "0X" Basis% = 16 l%=l%-2:v$=right$(v$,l%) else ' BASIC binary if Basis$ = "&B" Basis% = 2 l%=l%-2:v$=right$(v$,l%) else ' decimal Basis% = 10 end_if end_if
if l%<1 then return for i%=1 to l% v% = v% * Basis% v% = v% + instr(Numbers$,mid$(v$,i%,1)) next i% return | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Dim 3 Oct 2010 - 11:58 | |
| On arrive à un super méga-convertisseur ! Extra ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: conversion héxa en décimal Dim 3 Oct 2010 - 13:53 | |
| Un peu plus court que d.j., mais moins universel (il n'y a pas le binaire, qui il est vrai ne sert pas souvent): - Code:
-
DIM v, h$, i% LABEL cvh, chv
v = 2329573: ' par exemple ... GOSUB cvh: PRINT h$: GOSUB chv: PRINT STR$(v) END
cvh: h$ = "": ' v décimal -> h$ hexa REPEAT h$ = MID$("0123456789ABCDEF",1+BIN_AND(v,15),1)+h$: v = INT(v/16) UNTIL v=0 RETURN
chv: v = 0: ' h$ hexa -> v décimal FOR i% = 1 TO LEN(h$) v = v*16 + INSTR("0123456789ABCDEF", MID$(h$, i%, 1))-1 NEXT i% RETURN Mais en tout cas un peu plus rationnel que ce que j'ai déposé plus haut ! | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Dim 3 Oct 2010 - 14:29 | |
| Quand tu écris cvh ou chv, je comprends c pour convertisseur h pour hexadécimal mais que veut dire v ? Me permets-tu de me servir de ton dernier programme pour faire et publier un super-convertisseur ? | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: conversion héxa en décimal Dim 3 Oct 2010 - 14:36 | |
| Evidemment jj, je considère que tout ce qui est mis ici tombe dans le domaine public ! donc uses et abuses. J'ai mis v pour valeur, j'aurais sans doute dû mettre d comme décimal, et peut-être mettre des noms plus explicites pour les s/p: par exemple Dec2Hex et Hex2Dec. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Dim 3 Oct 2010 - 18:37 | |
| Et voilà un super-convertisseur très utilitaire et facile à utiliser : Ah, pour convertir de l'hexa ne comportant pas de lettre ou du décimal ne comportant que des 1 et des 0 consultez l'aide fournie. - Code:
-
rem ' Super-convertisseur Hex-dec-bin dim a : rem Annulation de l`opération si caractère anormal dim d : rem Décimal si d=1 dim h : rem Hexadécimal si h=1 dim op : rem Nature de l`OPération demandée dim a$ , i% , j% : rem Variables provisoires dim h$ : rem Valeur donnée (éventuellement Hexadécimale) dim v : rem Valeur donnée (en décimal ou en binaire) label aide , cbd , cdb , cdh, chd , colle , conv , copie , key , vide , zut caption 0,"SUPER-CONVERTISSEUR HEXA-DÉCI-BIN" width 0,380 : height 0,420
alpha 1 left 1,40 : top 1,20 : font_bold 1 caption 1,"Entrez la donnée à convertir :"
edit 2 left 2,40 : top 2,40 : width 2,160 set_focus 2 on_key_up 2,key
alpha 3 left 3,250 : top 3,20 : font_bold 3 caption 3,"Convertir en :"
option 4 left 4,250 : top 4,45 caption 4,"Hexadécimal" mark_on 4
option 5 left 5,250 : top 5,70 caption 5,"Décimal"
option 6 left 6,250 : top 6,95 caption 6,"Binaire"
button 7 left 7,100 : top 7,80 : width 7,100 : height 7,30 caption 7,"Convertir" : font_bold 7 on_click 7,conv
alpha 8 left 8,40 : top 8,140 : font_bold 8 caption 8,"Résultat :"
memo 9 left 9,40 : top 9,160 : width 9,290 : height 9,200 bar_vertical 9
button 10 left 10,120 : top 10,130 : width 10,50 : height 10,20 caption 10,"Copier" : inactive 10 on_click 10,copie
button 11 left 11,200 : top 11,130 : width 11,50 : height 11,20 caption 11,"Vider" on_click 11,vide
button 12 left 12,280 : top 12,130 : width 12,50 : height 12,20 caption 12,"Quitter" on_click 12,zut
button 13 left 13,20 : top 13,70 : width 13,50 : height 13,20 caption 13,"Coller" : inactive 13 on_click 13,colle
button 14 left 14,20 : top 14,110 : width 14,50 : height 14,20 caption 14,"Aide" on_click 14,aide
end
aide: a$="AIDE AU CONVERTISSEUR HEXA-DÉCIMAL-BINAIRE"+chr$(13)+chr$(13) a$=a$+"Le convertisseur est facile à utilier et se suffit à lui-même." a$=a$+chr$(13)+"Deux points seulement sont à préciser :"+chr$(13)+chr$(13) a$=a$+"Il détecte automatiquement si vous entrez du binaire,"+chr$(13) a$=a$+"du décimal ou de l'hexadécimal. Mais si vous entrez"+chr$(13) a$=a$+"de l'hexadécimal qui ne contient que des chiffres,"+chr$(13) a$=a$+"ou du décimal qui ne contient que des 1 et des 0,"+chr$(13) a$=a$+"il peut alors se tromper."+chr$(13) a$=a$+"Vous pouvez donc préciser la nature de l'entrée"+chr$(13) a$=a$+"en ajoutant une consonne adéquate à la fin :"+chr$(13) a$=a$+"- H ou X pour HeXadécimal"+chr$(13) a$=a$+"- M ou L pour déciMaL"+chr$(13) a$=a$+"- N ou R pour biNaiRe"+chr$(13) a$=a$+"(mais ne mettez surtout pas un B ou un D"+chr$(13) a$=a$+"Exemples : 110M ou 124H"+chr$(13)+chr$(13) a$=a$+"Le bouton COPIER ne copie que le dernier résultat."+chr$(13) a$=a$+"Pour copier une zone mise en surbrillance,"+chr$(13) a$=a$+"utiliser le clic droit de la souris." message a$ return
cbd: j%=0 for i%=1 to len(h$) j%=j%+val(mid$(h$,i%,1))*power(2,len(h$)-i%) next i% v=j% return
cdb: h$="" repeat h$=mid$("01",1+bin_and(v,1),1)+h$ v=int(v/2) until v=0 return
cdh: h$="" repeat h$=mid$("0123456789ABCDEF",1+bin_and(v,15),1)+h$ v=int(v/16) until v=0 return
chd: v=0 for i% = 1 to len(h$) v=v*16+instr("0123456789ABCDEF",mid$(h$,i%,1))-1 next i% return
colle: text 2,clipboard_string_paste$ return
conv: a=0 : d=0 : h=0 : op=0 if text$(2)<>"" h$=text$(2) h$=upper$(h$) if right$(h$,1)="H" or right$(h$,1)="X" then op=1 : h$=left$(h$,len(h$)-1) if right$(h$,1)="M" or right$(h$,1)="L" then op=2 : h$=left$(h$,len(h$)-1) if right$(h$,1)="N" or right$(h$,1)="R" then op=3 : h$=left$(h$,len(h$)-1) for i%=1 to len(h$) if asc(mid$(h$,i%,1))<48 then a=1 if asc(mid$(h$,i%,1))>57 and asc(mid$(h$,i%,1))<65 then a=1 if asc(mid$(h$,i%,1))>70 then a=1 next i% if a=0 for i%=65 to 70 if instr(h$,chr$(i%))>0 then h=1 next i% for i%=50 to 57 if instr(h$,chr$(i%))>0 then d=1 next i% if h=1 op=1 else if d=1 if op<>1 then op=2 else if op=0 then op=3 end_if end_if item_add 9,"ENTRÉE = "+h$ select op case 1 : item_add 9,"NATURE = HEXADÉCIMAL" case 2 : item_add 9,"NATURE = DÉCIMAL" case 3 : item_add 9,"NATURE = BINAIRE" end_select if checked(4)=1 item_add 9,"RÉSULTAT EN HEXADÉCIMAL" select op case 2 : v=val(h$) : gosub cdh case 3 : gosub cbd : gosub cdh end_select end_if if checked(5)=1 item_add 9,"RÉSULTAT EN DÉCIMAL" select op case 1 : gosub chd case 2 : v=val(h$) case 3 : v=val(h$) : gosub cbd end_select h$=str$(v) end_if if checked(6)=1 item_add 9,"RÉSULTAT EN BINAIRE" select op case 1 : gosub chd : gosub cdb case 2 : v=val(h$) : gosub cdb end_select end_if item_add 9,"RÉSULTAT = "+h$ item_add 9,"" active 10 end_if end_if return
copie: clipboard_string_copy h$ active 13 return
key: if key_up_code=13 then gosub conv return
vide: text 2,"" clear 9 inactive 10 set_focus 2 return
zut: terminate
Je ne crois pas qu'il y ait de bug, si vous en trouvez, dites-le moi. | |
| | | Invité Invité
| Sujet: Re: conversion héxa en décimal Dim 3 Oct 2010 - 19:41 | |
| Ils travaillent bien les gars sur ce forum! Super La seule chose: je n'ai pas vérifié les résultats, mais comme je sais que certains le feront! |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: conversion héxa en décimal Dim 3 Oct 2010 - 23:29 | |
| Pas mal jjn, au moins c'est présentable ! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: conversion héxa en décimal Lun 4 Oct 2010 - 20:43 | |
| Qu'un mot : Bravo ! @JL35: Je m'en sers tous les jours du binaire: on l'utilise beaucoup en automatisme par exemple dans les registres d'état/controle des convertisseurs de fréquence. Dans les dialogues réseau (champs de bits: très pratique et économique de concentrer des infos en un seul mot) Dans les registres de micro-contrôleur, etc, etc... bref dans pas mal d'applic ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: conversion héxa en décimal Lun 4 Oct 2010 - 21:41 | |
| Je sais évidemment que le binaire est la base de l'informatique, mais en tant que programmeurs on utilise surtout les conversions décimal/hexa dans les deux sens (l'hexa n'étant qu'une façon de représenter le binaire). Je ne pensais pas bien sûr aux applications industrielles, automatismes, etc, mais là on sort un peu du champ d'application de Panoramic. Il me semble. Maintenant, évidemment ça ne peut pas faire de mal, qui peut le plus peut le moins ! De même on trouve encore parfois des conversions en octal, qui lui n'est plus d'aucune utilité depuis que les bits sont regroupés par 4 (et non 3 comme dans d'anciennes machines, d'où l'octal) | |
| | | Contenu sponsorisé
| Sujet: Re: conversion héxa en décimal | |
| |
| | | | conversion héxa en décimal | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |