Для целого арифметики, вы можете использовать оболочку:
dec=$((a * 256 ** 3 + b * 256 ** 2 + c * 256 + d))
echo "$dec"
Это использует арифметический контекст ((...))
для вычисления значения.
Обратите внимание, что в задании нет места, это важно!
Оболочка не поддерживает арифметику с плавающей запятой, но bc
или awk
do. Например, используя AWK (и при условии, что у вас есть переменные оболочки $a
, $b
, $c
и $d
определены):
awk -v a="$a" -v b="$b" -v c="$c" -v d="$d" 'BEGIN{print a * 256 ** 3 + b * 256 ** 2 + c * 256 + d}'
или с помощью бв:
printf '%s * 256^3 + %s * 256^2 + %s * 256 + %s\n' "$a" "$b" "$c" "$d" | bc -l
Используя формат строки спецификатор %s
для каждого из переменные оболочки означают, что перед передачей значений в bc точность не теряется.
[ «Shellscript» не язык] (http://meta.stackoverflow.com/questions/292023/ пусть-shellscript огневого в скорлупе). Какую оболочку вы используете? –