Messages : 927
Sujets : 93
Inscription : Jul 2007
25/05/2009, 04:43
(Modification du message : 25/05/2009, 15:49 par MenzAgitat .)
J'ai besoin d'une fonction pour convertir une chaîne de caractères en hexadécimal (ou en octal, je m'accomoderai de l'un comme de l'autre) et je sèche. Des idées ?
Messages : 2,346
Sujets : 193
Inscription : Apr 2004
Avec les commandes scan et format non ?
tclcopier
proc str2hex { str } {
set hex ''
while { [ scan $str % c letter] ! = -1 } {
append hex [ format % x $letter ]
}
return $hex
}
proc str2oct { str } {
set oct ''
while { [ scan $str % c letter] ! = -1 } {
append oct [ format % o $letter ]
}
return $oct
}
Je ne suis vraiment pas certain de mon coup, mais c'est peut-être une piste.
Messages : 927
Sujets : 93
Inscription : Jul 2007
25/05/2009, 15:25
(Modification du message : 25/05/2009, 15:48 par MenzAgitat .)
J'avais déjà essayé un truc comme ça mais format %x attend un entier et non un caractère.
En plus, à vue de nez y'a rien qui fait avancer le while et ça va faire une boucle infinie.
Edit : j'ai trouvé la solution du côté de binary :
tclcopier
proc str2hex { str } {
binary scan $str H* hex
return hex
}
Messages : 2,346
Sujets : 193
Inscription : Apr 2004
Ah oui, j'ai zappé un substring :)
Il faudrait donc convertir ta chaine en valeurs ascii non ?
tclcopier
proc asc { char } {
return [ scan $char "%c" ]
}
proc chr { num } {
return [ format "%c" $num ]
}
Je ne vois pas tellement comment convertir 'toto' en hexa sinon.
Messages : 927
Sujets : 93
Inscription : Jul 2007
J'ai trouvé la solution et édité mon message 2mn avant que tu ne valides ta réponse :p