Divers outils sont à votre disposition à l'intérieur d'un shell. Sputnick vous a donné un excellent aperçu de vos options, sur la base de votre question initiale. Il mérite certainement des votes pour le temps qu'il a passé à vous donner plusieurs bonnes réponses.
Un de plus qui n'est pas sur sa liste :
[ghoti@pc ~]$ dc -e '16i BFCA3000 p'
3217698816
Mais si tout ce que vous voulez faire est de soustraire, pourquoi prendre la peine de changer l'entrée en base 10 ?
[ghoti@pc ~]$ dc -e '16i BFCA3000 17FF - p 10o p'
3217692673
BFCA1801
[ghoti@pc ~]$
El dc
est "desk calc". Il prendra également les entrées de stdin, comme bc
mais au lieu d'utiliser l'"ordre des opérations", il utilise la notation par empilement ("polonaise inversée"). Vous lui donnez des entrées qu'il ajoute à une pile, puis des opérateurs qui retirent des éléments de la pile et repoussent les résultats.
Dans les commandes ci-dessus, nous avons obtenu ce qui suit :
-
16i
-- indique à dc d'accepter les entrées en base 16 (hexadécimale). Ne change pas la base de sortie.
-
BFCA3000
-- votre numéro initial
-
17FF
-- un nombre hexagonal aléatoire que j'ai choisi de soustraire de votre nombre initial
-
-
-- prenez les deux nombres que nous avons poussés, et soustrayez le dernier du premier, puis repoussez le résultat sur la pile.
-
p
-- imprime le dernier élément de la pile. Cela ne change pas la pile, donc...
-
10o
-- dit à dc d'imprimer sa sortie en base "10", mais rappelez-vous que notre schéma de numérotation d'entrée est actuellement hexadécimal, donc "10" signifie "16".
-
p
-- imprime à nouveau le dernier élément de la pile ... cette fois en hexadécimal.
Vous pouvez construire des solutions mathématiques fabuleusement complexes avec dc. C'est une bonne chose à avoir dans votre boîte à outils pour les scripts.