PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → conversion en hexadecimal
conversion en hexadecimal
Débuté par super b, 12 avr. 2005 13:32 - 7 réponses
Posté le 12 avril 2005 - 13:32
Bonjour a tous ,

Je sais que cette question a deja ete posée mais je n'ai pas compris

Donc je me lance


Je debute avec Windev et j'ai une chaine du style 531TBZ20622 et j'amerai la traduire en hexadecimal

En fait je la mets en minuscule et je veux rajouter deux zero a la fin et la convertir en hexa

Qqun peut il m'aider en m'expliquant de facon claire (comme a un enfant de 6 ans lol ) comment faire
me donner le code m'aiderai, me l'expliker m'aiderai encore plus


merci bcp
Posté le 12 avril 2005 - 16:14
fonction vers_HEX(nChaine)

ChaineHex est une chaîne
nCpte est un entier

//On passe la chaine en minuscule
nChaine = Minuscule(nChaine)
//On ajoute les deux zero en fin de chaine
nChaine = nChiane + "00"

//On parcour la chaine caractère par caractère pour convertir chaque caratère en hexa et on les concataine pour a la fin obtenir la chaine d'origine en hexa

POUR nCpte = 1 A Taille (nChaine)
//On extrait le caractère a la position i dans la chaine
cCaract est une chaîne = Milieu(nChaine,nCpte,1)
//On le convertie en hexadecimal
nHex est un chaîne = NumeriqueVersChaîne(Asc(cCaract),"x")
//On concataine les caractère en hexa pour avoir la chaine en hexa
ChaineHex+=nHex
FIN

RENVOYER ChaineHex

Tu as tous compris ?
Posté le 12 avril 2005 - 16:18
Bonjour,

Tout d'abord, cette chaîne n'est pas transformable en hexadécimal, en ce sens qu'elle inclut des nombres (codables en hexa) et des lettres.

En termes purement techniques, que ce soit du binaire ou de l'hexa, c'est simplement une question de transformation. Mais...

L'hexadecimal va de 0 à 15 (0 1 2 3 4 5 6 7 8 9 a b c d e f) donc si on peu coder un chiffre, une lettre telle que z ou Z, c'est plus difficile.



Sinon prenons 15 en tant que nombre :

15/16 il reste 15 soit F

35 : 35 / 16 il reste 3 ; 35-3 / 16 = 2
mon 35 devient 23 en hexa.

255 / 16 reste 15 soit F ; 255 - 15 / 16 = 15 soit F, le nombre est FF.

Et ainsi de suite, par modulo et congruence, pour reprendre les termes mathématiques respectivement de reste de la division et résultat en parties entières (si mes souvenirs sont bons).


Bien cordialement,

Jacques De Schryver

nb : Si tu souhaite mettre en hexa pour des raisons de cryptage, on peut trouver plus simple.
Posté le 12 avril 2005 - 17:17
Re-bonjour,

Le code de Jérôme donne des octets, soit effectivement de l'hexadécimal au sens ou chaque caractère est codé sur deux symboles hexa.

Donc c'est techniquement de l'ASCII (0 à 255), tel que le stipule son code.

Et cela marche bien.

Cependant il s'agit d'une traduction caractère par caractère.

La méthode que j'ai illustrée traduit non pas des caractères mais des nombres.

Comme les deux fonctionnent, c'est à toi de voir...

Bien cordialement,

Jacques De Schryver
Posté le 12 avril 2005 - 17:45
au lieu de Milieu(nChaine,nCpte,1)....il faut utiliser nChaine[[nCpte]]
beaucoup plus rapide !
ce qui permet de faire à la place de ça

//On extrait le caractère a la position i dans la chaine
cCaract est une chaîne = Milieu(nChaine,nCpte,1)
//On le convertie en hexadecimal
nHex est un chaîne = NumeriqueVersChaîne(Asc(cCaract),"x")
//On concataine les caractère en hexa pour avoir la chaine en hexa
ChaineHex+=nHex


ChaineHex = ""
FOR nCpte = 1 to Taille (nChaine)
ChaineHex += NumériqueVersChaine( Asc( nChaine[[nCpte]] )
,"02x")
END




"raimbourg jerome" <jerome.raimbourg@gmail.com> a écrit dans le message de
news:425bb026@news.pcsoft.fr...

fonction vers_HEX(nChaine)

ChaineHex est une chaîne
nCpte est un entier

//On passe la chaine en minuscule
nChaine = Minuscule(nChaine)
//On ajoute les deux zero en fin de chaine
nChaine = nChiane + "00"

//On parcour la chaine caractère par caractère pour convertir chaque

caratère en hexa et on les concataine pour a la fin obtenir la chaine
d'origine en hexa

POUR nCpte = 1 A Taille (nChaine)
//On extrait le caractère a la position i dans la chaine
cCaract est une chaîne = Milieu(nChaine,nCpte,1)
//On le convertie en hexadecimal
nHex est un chaîne = NumeriqueVersChaîne(Asc(cCaract),"x")
//On concataine les caractère en hexa pour avoir la chaine en hexa
ChaineHex+=nHex
FIN

RENVOYER ChaineHex

Tu as tous compris ?

Posté le 13 avril 2005 - 03:20
tout d'abord merci a tous de m'avoir repondu


Qd j'applique votre code Windev (9) me renvoie inlassablement le meme code d'erreur

"Les paramètres d'appel du code Clic sur Btn_Calc sont incorrects : on attendait 1 paramètres et on en a reçu 0."

Qqun peut il me dire ce que cela signifie ?
Ais je fait une erreur ds la conversion des variables ou s'agit il d'autre chose
je precise que j'ai créée ma fenetre avec deux champs un champs de saisie nommé "NumSerie" et un autre ou devrait s'afficher le resultat nommé tres pompeusement "WEPKEY"
Le tout est agrementé allègrement par un bouton censé lancer l'operation


Je suis desolé de vous embeter (car je presume que vous avez des choses bien plus interressante a faire que de repondre aux questions des debutants niais ) mais j'apprecierai ( et mon patron aussi lol) avoir une reponse ou un debut de piste


Merci a tous encore une fois
Posté le 13 avril 2005 - 10:43
La fonction que tu appelle attend un paramètre (sûrement la valeur saisie
dans NumSerie) mais tu ne le met pas à l'appel

code Clic sur Btn_Calc
WEPKEY = VersHexa(NumSerie)

FUNCTION VersHexa(pChaine)
...............................
..............................
..............................
..............................
Renvoyer Resultat


"super_b" <superb@test.fr> a écrit dans le message de
news:425c4c39$1@news.pcsoft.fr...


tout d'abord merci a tous de m'avoir repondu


Qd j'applique votre code Windev (9) me renvoie inlassablement le meme

code d'erreur

"Les paramètres d'appel du code Clic sur Btn_Calc sont incorrects : on

attendait 1 paramètres et on en a reçu 0."

Qqun peut il me dire ce que cela signifie ?
Ais je fait une erreur ds la conversion des variables ou s'agit il d'autre

chose
> je precise que j'ai créée ma fenetre avec deux champs un champs de saisie
nommé "NumSerie" et un autre ou devrait s'afficher le resultat nommé tres
pompeusement "WEPKEY"
Le tout est agrementé allègrement par un bouton censé lancer l'operation


Je suis desolé de vous embeter (car je presume que vous avez des choses

bien plus interressante a faire que de repondre aux questions des debutants
niais ) mais j'apprecierai ( et mon patron aussi lol) avoir une reponse ou
un debut de piste


Merci a tous encore une fois
Posté le 14 avril 2005 - 14:42
Merci a tous ( et surtout Philippe) pour votre aide
Ca marche nickel
vous etes des boss