Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #szamrendszer
- #echo $((2#10010101110101010101))
- #printf '%x\n' " $((2#1011011101101010101))"
- #printf '%x\n' " $((10#127))"
- function hasznalat {
- echo "
- Használat: ./atvaltas.sh -f [2 / 10 / 16] -c [2 / 10 / 16] -s [szám]
- Magyarázat:
- -f Hanyas számrendszerből
- -c Hanyas számrendszerbe
- -s Melyik számot
- "
- exit
- }
- F=0
- C=0
- S=0
- while getopts ":f:c:s:" options
- do
- case $options in
- f)
- [[ $OPTARG == 2 ]] || [[ $OPTARG == 10 ]] || [[ $OPTARG == 16 ]] && F=$OPTARG || hasznalat
- ;;
- c)
- [[ $OPTARG == 2 ]] || [[ $OPTARG == 10 ]] || [[ $OPTARG == 16 ]] && C=$OPTARG || hasznalat
- ;;
- s)
- S=$OPTARG
- ;;
- :)
- hasznalat
- ;;
- \?)
- hasznalat
- ;;
- *)
- hasznalat
- ;;
- esac
- done
- if [[ $F == 0 ]] || [[ $C == 0 ]] || [[ $S == 0 ]]
- then
- hasznalat
- fi
- if [[ $F == $C ]]
- then
- echo "Eredmény: $S"
- exit
- fi
- t=0
- temp=$S
- while test -n "$temp";
- do
- t=${temp:0:1}
- if [[ $F == 2 ]] && [[ $t > 1 ]] || [[ $t < 0 ]]
- then
- echo "Nem megfelelő a bevitt szám! Pl.: 11000001"
- exit
- fi
- if [[ $F == 16 ]] && [[ $t > 'F' ]] || [[ $t < 0 ]]
- then
- echo "Nem megfelelő a bevitt szám! Pl.: FF134CA"
- exit
- fi
- if [[ $F == 10 ]] && [[ $t > 9 ]] || [[ $t < 0 ]]
- then
- echo "Nem megfelelő a bevitt szám! Pl.: 2463786"
- exit
- fi
- temp=${temp:1}
- done
- #E=$(echo "obase=$C; ibase=$F; $S" | bc )
- #echo "Eredmény: $E"
- if [[ $F == 2 ]] && [[ $C == 10 ]]
- then
- echo "Eredmény: $((2#$S))"
- exit
- fi
- if [[ $F == 2 ]] && [[ $C == 16 ]]
- then
- printf 'Eredmény: %x\n' " $((2#$S))"
- exit
- fi
- if [[ $F == 10 ]] && [[ $C == 2 ]]
- then
- bit=0
- dec=$S
- tarolo=
- while [ $dec -ne 0 ]
- do
- bit=`expr $dec % 2`
- tarolo=$bit$tarolo
- dec=`expr $dec / 2`
- done
- echo "Eredmény: $tarolo"
- exit
- fi
- if [[ $F == 10 ]] && [[ $C == 16 ]]
- then
- printf "Eredmény:%x\n" "$S"
- exit
- fi
- if [[ $F == 16 ]] && [[ $C == 2 ]]
- then
- a["15"]="1111"
- a["14"]="1110"
- a["13"]="1101"
- a["12"]="1100"
- a["11"]="1011"
- a["10"]="1010"
- a["9"]="1001"
- a["8"]="1000"
- a["7"]="0111"
- a["6"]="0110"
- a["5"]="0101"
- a["4"]="0100"
- a["3"]="0011"
- a["2"]="0010"
- a["1"]="0001"
- a["0"]="0000"
- hex=$S
- tarolo=
- while test -n "$hex";
- do
- t=${hex:0:1}
- kar=$(echo "ibase=16; $t" | bc)
- tarolo=$tarolo${a[kar]}
- hex=${hex:1}
- done
- echo "Eredmény: $tarolo"
- exit
- fi
- if [[ $F == 16 ]] && [[ $C == 10 ]]
- then
- printf "Eredmény: %d\n" "0x$S"
- exit
- fi
- #echo $((2#10010101110101010101))
- #printf '%x\n' " $((2#1011011101101010101))"
- #printf '%x\n' " $((10#127))"
- exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement