Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

diesel831 a écrit :

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