Thursday, May 25, 2017

Binary to Decimal Conversion Shell Script

Binary to Decimal Conversion Shell Script



#!/bin/bash
# SCRIPT: binary2dec.sh
# USAGE: binary2dec.sh Binary_Numbers(s)
# PURPOSE: Binary to Decimal Conversion. Takes input as command line
# arguments.
# \ ////
# - - //
# @ @
# ---oOOo-( )-oOOo---
#
#####################################################################
# Script Starts Here #
#####################################################################
if [ $# -eq 0 ]
then
echo "Argument(s) not supplied "
echo "Usage: binary2dec.sh Binary_Number(s)"
else
echo -e "33[1mBINARY DECIMAL33[0m"

while [ $# -ne 0 ]
do
Binary=$1
Bnumber=$Binary
Decimal=0
power=1

while [ $Binary -ne 0 ]
do
rem=$(expr $Binary % 10 )
Decimal=$((Decimal+(rem*power)))
power=$((power*2))
Binary=$(expr $Binary / 10)
done

echo -e "$Bnumber $Decimal"
shift
done

fi

#NOTE: Using bc command you can directly get output at command line.
# Here were converting the binary number 111 to a base 10 (decimal)
# number.
#
# $ echo ibase=2;obase=A;111 | bc
# 7
#
#Note that the obase is "A" and not "10".The reason for this is youve
# set the ibase to 2, so if you now had tried to use "10" as the value
# for the obase, it would stay as "2", because "10" in base 2 is "2".
# So you need to use hex to break out of binary mode or use obase=1010
#
# $ echo ibase=2;obase=1010;10000 | bc
# 16
# $ echo ibase=2;obase=1010;1000001 | bc
# 65
#
# You can omit obase=A, because default obase is 10(decimal).
# $ echo ibase=2;1000001 | bc
# 65

OUTPUT:
# sh binary2dec.sh 100 1111 1111111 1000000
BINARY DECIMAL
100 4
1111 15
1111111 127
1000000 64

# sh binary2dec.sh 1111111111111111111
BINARY DECIMAL
1111111111111111111 524287

# sh binary2dec.sh 10000000000000000000
BINARY DECIMAL
binary2dec.sh:line 28:[:10000000000000000000:integer expression expected
10000000000000000000

NOTE:My bash can handle upto 9223372036854775807.
But with bc command you can do more.

# echo ibase=2;10000000000000000000|bc
524288
# echo ibase=2;110000000000000000000|bc
1572864

Available link for download

Go to link Download


No comments:

Post a Comment