Showing posts with label binary. Show all posts
Showing posts with label binary. Show all posts

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

Read more »