Debian Debian-France Debian-Facile Debian-fr.org Debian-fr.xyz Debian ? Communautés

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 29-05-2021 21:59:09

tux12
Membre
Lieu : ./
Distrib. : stable
Noyau : celui de la stable
(G)UI : KDE
Inscription : 27-02-2008

[Résolu] Utilisation de ibase et obase avec bc - conversions érronées

Bonjour,

Au fil de mes manips je me rends compte d'un petit bug dans bc, testé sur ma Debian 8 et sur sur une machine en ligne sous "sid/buster" selon le /etc/debian_version.
Je cherche à faire des conversions d'octal en hexa, du coup je prends bc et hop:

$ echo "ibase=8; obase=16 ; 036" | bc
22



Ok, sauf que 036 en octal ne font pas 22 en hexa. yikes
Voyons pour d'autres valeurs;

$ echo "ibase=8; obase=16 ; 36" | bc
22
$ echo "ibase=8; obase=16 ; 35" | bc
21
$ echo "ibase=8; obase=16 ; 34" | bc
20
$ echo "ibase=8; obase=16 ; 33" | bc
1D


On voit bien le problème entre 034 et 033 ou on passe de 0x20 à 0x1d

Par contre

$ echo "obase=16; ibase=8 ; 36" | bc
1E



À savoir donc, l'ordre d'apparition des variables ibase et obase EST important. J'ai eu de la chance de m'en apercevoir rapidement. J'espère que ça pourra être utile à d'autres.
Si vous pensez qu'il s'agit d'un bug qu'il faut remonter, je laisse ça à votre bon cœur. smile

Dernière modification par tux12 (29-05-2021 22:13:58)


Tout est un sauf zéro. - Wau Holland

Hors ligne

#2 30-05-2021 09:42:26

tux12
Membre
Lieu : ./
Distrib. : stable
Noyau : celui de la stable
(G)UI : KDE
Inscription : 27-02-2008

Re : [Résolu] Utilisation de ibase et obase avec bc - conversions érronées

Àprès quelques recherches j'ai trouvé l'explication dans l'avant dernier post de ce fil; le changement de base est effectif dès son apparition, et détermine la base utilisée pour la (les) variable(s) suivante(s).

Ainsi lorsque j'écrivais précédemment

$ echo "ibase=8; obase=16 ; 036" | bc


Initialement on est en base 10, mais on passe en base 8 pour les entrées (ibase), et donc la valeur 16 affectée à obase ensuite est comprise comme étant exprimée en base 8, soit 14 en décimal. Et 36 en base 8 , soit 30 en décimal, correspond bien à 22 en base 14.

Souhaitant que ça puisse aider.


Tout est un sauf zéro. - Wau Holland

Hors ligne

Pied de page des forums