bashに組み込まれている関数のみを使用して、基本10から任意の基本変換

bashに組み込まれている関数のみを使用して、基本10から任意の基本変換

指定された文字セットを使用して、数値を基本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"

おすすめ記事