Avec bash(ou n'importe quel shell, à condition que la printfcommande soit disponible (une commande POSIX standard souvent construite dans les shells)):
printf '%x\n' 85
Avec zsh, vous pouvez aussi faire:
dec=85
hex=$(([##16]dec))
Cela fonctionne pour les bases de 2 à 36 (avec une 0-9a-zcasse insensible aux chiffres).
Avec ksh93, vous pouvez utiliser:
dec=85
base54=$(printf %..54 "$dec")
Ce qui fonctionne pour les bases de 2 à 64 (avec 0-9a-zA-Z@_comme chiffres).
Avec kshet zsh, il y a aussi:
$ typeset -i34 x=123; echo "$x"
34#3l
Bien que cela soit limité aux bases jusqu'à 36 en ksh88, zsh et pdksh et 64 en ksh93.
Notez que tous ceux-ci sont limités à la taille des longentiers sur votre système ( intavec certains shells). Pour quelque chose de plus grand, vous pouvez utiliser bcou dc.
$ echo 'obase=16; 9999999999999999999999' | bc
21E19E0C9BAB23FFFFF
$ echo '16o 9999999999999999999999 p' | dc
21E19E0C9BAB23FFFFF
Avec des bases prises en charge allant de 2 à un certain nombre requis par POSIX pour être au moins aussi élevé que 99. Pour les bases supérieures à 16, les chiffres supérieurs à 9 sont représentés sous la forme de nombres décimaux séparés par des espaces et 0.
$ echo 'obase=30; 123456' | bc
04 17 05 06
Ou même avec dc( bcutilisé pour être (et est toujours sur certains systèmes) un wrapper dc):
$ echo 30o123456p | dc
04 17 05 06