С помощью bash(или любой оболочки при условии, что printfкоманда доступна (стандартная команда POSIX, часто встроенная в оболочки)):
printf '%x\n' 85
С помощью zshвы также можете сделать:
dec=85
hex=$(([##16]dec))
Это работает для баз от 2 до 36 (с 0-9a-zучетом регистра без учета цифр).
С помощью ksh93вы можете использовать:
dec=85
base54=$(printf %..54 "$dec")
Который работает для баз от 2 до 64 (с 0-9a-zA-Z@_цифрами).
С kshи zshесть также:
$ typeset -i34 x=123; echo "$x"
34#3l
Хотя это ограничено основами до 36 в ksh88, zsh и pdksh и 64 в ksh93.
Обратите внимание, что все они ограничены размером longцелых чисел в вашей системе ( intс некоторыми оболочками). Для чего-то большего, вы можете использовать bcили dc.
$ echo 'obase=16; 9999999999999999999999' | bc
21E19E0C9BAB23FFFFF
$ echo '16o 9999999999999999999999 p' | dc
21E19E0C9BAB23FFFFF
При поддерживаемых базах в диапазоне от 2 до некоторого числа POSIX должно быть не менее 99. Для баз, превышающих 16, цифры больше 9 представляются в виде разделенных пробелами 0-запятых десятичных чисел.
$ echo 'obase=30; 123456' | bc
04 17 05 06
Или то же самое с dc( bcраньше было (и до сих пор есть в некоторых системах) оболочкой dc):
$ echo 30o123456p | dc
04 17 05 06