Với bash
(hoặc bất kỳ shell nào, miễn là printf
lệnh có sẵn (một lệnh POSIX tiêu chuẩn thường được xây dựng trong các shell)):
printf '%x\n' 85
Với zsh
, bạn cũng có thể làm:
dec=85
hex=$(([##16]dec))
Điều đó làm việc cho các cơ sở từ 2 đến 36 (với 0-9a-z
trường hợp không nhạy cảm như các chữ số).
Với ksh93
, bạn có thể sử dụng:
dec=85
base54=$(printf %..54 "$dec")
Mà hoạt động cho các cơ sở từ 2 đến 64 (với 0-9a-zA-Z@_
các chữ số).
Với ksh
và zsh
, cũng có:
$ typeset -i34 x=123; echo "$x"
34#3l
Mặc dù điều đó giới hạn ở các cơ sở lên tới 36 trong ksh88, zsh và pdksh và 64 trong ksh93.
Lưu ý rằng tất cả những số đó được giới hạn ở kích thước của các long
số nguyên trên hệ thống của bạn ( int
với một số vỏ). Đối với bất cứ điều gì lớn hơn, bạn có thể sử dụng bc
hoặc dc
.
$ echo 'obase=16; 9999999999999999999999' | bc
21E19E0C9BAB23FFFFF
$ echo '16o 9999999999999999999999 p' | dc
21E19E0C9BAB23FFFFF
Với các cơ sở được hỗ trợ nằm trong khoảng từ 2 đến một số số theo yêu cầu của POSIX tối thiểu là 99. Đối với các cơ sở lớn hơn 16, các chữ số lớn hơn 9 được biểu thị dưới dạng số thập phân 0 đệm cách nhau.
$ echo 'obase=30; 123456' | bc
04 17 05 06
Hoặc tương tự với dc
(đã bc
từng (và vẫn còn trên một số hệ thống) một trình bao bọc xung quanh dc
):
$ echo 30o123456p | dc
04 17 05 06