Mit bash(oder einer beliebigen Shell, sofern der printfBefehl verfügbar ist (ein POSIX-Standardbefehl, der häufig in die Shells integriert ist):
printf '%x\n' 85
Mit zshkönnen Sie auch Folgendes tun:
dec=85
hex=$(([##16]dec))
Das funktioniert für Basen von 2 bis 36 (wobei die 0-9a-zGroß- und Kleinschreibung keine Rolle spielt).
Mit ksh93können Sie Folgendes verwenden:
dec=85
base54=$(printf %..54 "$dec")
Welches funktioniert für Basen von 2 bis 64 (mit 0-9a-zA-Z@_als die Ziffern).
Mit kshund zshgibt es auch:
$ typeset -i34 x=123; echo "$x"
34#3l
Dies ist jedoch auf Basen bis zu 36 in ksh88, zsh und pdksh und 64 in ksh93 beschränkt.
Beachten Sie, dass alle diese Werte auf die Größe der longGanzzahlen Ihres Systems beschränkt sind ( intmit einigen Shells). Für etwas größeres können Sie bcoder verwenden dc.
$ echo 'obase=16; 9999999999999999999999' | bc
21E19E0C9BAB23FFFFF
$ echo '16o 9999999999999999999999 p' | dc
21E19E0C9BAB23FFFFF
Bei unterstützten Basen von 2 bis zu einer von POSIX geforderten Zahl von mindestens 99 werden Ziffern größer als 9 als durch Leerzeichen getrennte, mit 0 aufgefüllte Dezimalzahlen dargestellt.
$ echo 'obase=30; 123456' | bc
04 17 05 06
Oder dasselbe mit dc(war bcfrüher (und ist auf einigen Systemen immer noch) ein Wrapper dc):
$ echo 30o123456p | dc
04 17 05 06