指定された文字セットを使用して、数値を基本10から任意の基本に変換するbashコマンドを作成しようとしています(たとえば、文字azを使用して基本26に変換しますが、実際にはユースケースではありません)。
私持つこの問題は以前は解決されましたが、bashでは解決されておらず(私の経験は限られています)、かなり長い時間が経っても解決されませんでした。
どんなアイデアがありますか?
ベストアンサー1
似たようなものがありました。
#!/bin/bash
#
# usage: convert_base <number-to-convert> <output-base> <output-digit-string>
#
# example:
# $ convert_base 3735928559 16 "0 1 2 3 4 5 6 7 8 9 A B C D E F"
# DEADBEEF
decimal_number=$1
output_base=$2
read -ra output_digits <<< "$3"
# TODO various assertions
if ((decimal_number == 0)); then
output=${output_digits[0]}
else
while ((decimal_number > 0)); do
digit=$(( decimal_number % output_base ))
output="${output_digits[digit]}$output"
decimal_number=$(( decimal_number / output_base ))
done
fi
printf '%s\n' "$output"