#1 Le 23/02/2018, à 18:00
- diesel
[RESOLU] Comportement bizarre de printf
Bonjour,
Dans un terminal avec bash :
variable1=12
printf '%08x' $variable1
donne :
0000000c
variable1=0012
printf '%08x' $variable1
donne :
0000000a
Où est-ce que j'ai merdé ?
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 23/02/2018, à 18:41)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#2 Le 23/02/2018, à 18:15
- pingouinux
Re : [RESOLU] Comportement bizarre de printf
Bonjour,
Le nombre 0012, commençant par un 0, est interprété comme un nombre octal, donc 10.
Hors ligne
#3 Le 23/02/2018, à 18:17
- erresse
Re : [RESOLU] Comportement bizarre de printf
Bonjour,
Lorsque tu entres variable1=12, c'est la valeur 12 en décimal, ce qui donne en effet 0c en hexadécimal.
Lorsque tu entres variable1=0012, c'est la valeur 12 en octal, soit 10 en décimal, ce qui donne en hexadécimal 0a.
CQFD
Edit: zut ! encore grillé...
Dernière modification par erresse (Le 23/02/2018, à 18:18)
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#4 Le 23/02/2018, à 18:21
- diesel
Re : [RESOLU] Comportement bizarre de printf
Bonsoir pingouinux et erresse,
Merci pour vos réponses.
Cela veut dire que je suis incapable d'imprimer un nombre décimal qui contient des zéros non significatifs. C'est précisé quelque part, ça ?
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 23/02/2018, à 18:25)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#5 Le 23/02/2018, à 18:31
- pingouinux
Re : [RESOLU] Comportement bizarre de printf
Voici une façon de faire
printf '%08x\n' $(sed 's/^0\+//' <<<$variable1)
0000000c
Hors ligne
#6 Le 23/02/2018, à 18:36
- diesel
Re : [RESOLU] Comportement bizarre de printf
Merci pingouinux,
Cela dit, si on est amené, par exemple, à traiter des données qui ont été formatées à un nombre fixe de chiffres, il y a là un potentiel de bugs faramineux.
Et en fait, c'est tout bash qui est comme ça !. Je viens d'essayer :
echo $(( 5 + 0010 ))
qui donne :
13
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 23/02/2018, à 18:39)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#7 Le 23/02/2018, à 18:45
- erresse
Re : [RESOLU] Comportement bizarre de printf
Cela veut dire que je suis incapable d'imprimer un nombre décimal qui contient des zéros non significatifs.
J'aurais tendance à penser qu'une valeur numérique ne peut pas contenir des zéros non significatifs...
C'est possible si la valeur est un littéral alphanumérique représentant un nombre (ce qui est le cas par défaut en bash), mais à ce moment-là, l'instruction de pingouinux prend tout son sens pour convertir correctement la valeur en numérique.
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#8 Le 23/02/2018, à 18:57
- diesel
Re : [RESOLU] Comportement bizarre de printf
Mouairf...
C'est dangereux quand-même (mais je le saurai à partir de maintenant).
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne