Avec bash
(ou n'importe quel shell, à condition que la printf
commande 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-z
casse 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 ksh
et 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 long
entiers sur votre système ( int
avec certains shells). Pour quelque chose de plus grand, vous pouvez utiliser bc
ou 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
( bc
utilisé pour être (et est toujours sur certains systèmes) un wrapper dc
):
$ echo 30o123456p | dc
04 17 05 06