Advertisement
drakee

Számrendszer alakító

Aug 16th, 2014
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.58 KB | None | 0 0
  1. #!/bin/bash
  2. #szamrendszer
  3.  
  4. #echo $((2#10010101110101010101))
  5. #printf '%x\n' " $((2#1011011101101010101))"
  6. #printf '%x\n' " $((10#127))"
  7.  
  8. function hasznalat {
  9. echo "
  10. Használat: ./atvaltas.sh -f [2 / 10 / 16] -c [2 / 10 / 16] -s [szám]
  11.  
  12. Magyarázat:
  13. -f Hanyas számrendszerből
  14. -c Hanyas számrendszerbe
  15. -s Melyik számot
  16. "
  17. exit
  18. }
  19.  
  20. F=0
  21. C=0
  22. S=0
  23.  
  24. while getopts ":f:c:s:" options
  25. do
  26.     case $options in
  27.         f)
  28.             [[ $OPTARG == 2 ]] || [[ $OPTARG == 10 ]] || [[ $OPTARG == 16 ]] && F=$OPTARG || hasznalat
  29.             ;;
  30.         c)
  31.             [[ $OPTARG == 2 ]] || [[ $OPTARG == 10 ]] || [[ $OPTARG == 16 ]] && C=$OPTARG || hasznalat
  32.             ;;
  33.         s)
  34.             S=$OPTARG
  35.             ;;
  36.         :)
  37.             hasznalat
  38.             ;;
  39.         \?)
  40.             hasznalat
  41.             ;;
  42.         *)
  43.             hasznalat
  44.             ;;
  45.     esac
  46. done
  47.  
  48. if [[ $F == 0 ]] || [[ $C == 0 ]] || [[ $S == 0 ]]
  49. then
  50.     hasznalat
  51. fi
  52.  
  53. if [[ $F == $C ]]
  54. then
  55.     echo "Eredmény: $S"
  56.     exit
  57. fi
  58.  
  59. t=0
  60. temp=$S
  61.  
  62. while test -n "$temp";
  63. do
  64.     t=${temp:0:1}
  65.  
  66.     if [[ $F == 2 ]] && [[ $t > 1 ]] || [[ $t < 0 ]]
  67.     then
  68.         echo "Nem megfelelő a bevitt szám! Pl.: 11000001"
  69.         exit
  70.     fi
  71.  
  72.     if [[ $F == 16 ]] && [[ $t > 'F' ]] || [[ $t < 0 ]]
  73.     then
  74.         echo "Nem megfelelő a bevitt szám! Pl.: FF134CA"
  75.         exit
  76.     fi
  77.  
  78.     if [[ $F == 10 ]] && [[ $t > 9 ]] || [[ $t < 0 ]]
  79.     then
  80.         echo "Nem megfelelő a bevitt szám! Pl.: 2463786"
  81.         exit
  82.     fi
  83.  
  84.     temp=${temp:1}
  85. done
  86.  
  87. #E=$(echo "obase=$C; ibase=$F; $S" | bc )
  88. #echo "Eredmény: $E"
  89.  
  90. if [[ $F == 2 ]] && [[ $C == 10 ]]
  91. then
  92.     echo "Eredmény: $((2#$S))"
  93.     exit
  94. fi
  95.  
  96. if [[ $F == 2 ]] && [[ $C == 16 ]]
  97. then
  98.     printf 'Eredmény: %x\n' " $((2#$S))"
  99.     exit
  100. fi
  101.  
  102. if [[ $F == 10 ]] && [[ $C == 2 ]]
  103. then
  104.     bit=0
  105.     dec=$S
  106.     tarolo=
  107.  
  108.     while [ $dec -ne 0 ]
  109.     do
  110.         bit=`expr $dec % 2`
  111.         tarolo=$bit$tarolo
  112.         dec=`expr $dec / 2`
  113.     done
  114.  
  115.     echo "Eredmény: $tarolo"
  116.     exit
  117. fi
  118.  
  119. if [[ $F == 10 ]] && [[ $C == 16 ]]
  120. then
  121.     printf "Eredmény:%x\n" "$S"
  122.     exit
  123. fi
  124.  
  125. if [[ $F == 16 ]] && [[ $C == 2 ]]
  126. then
  127.     a["15"]="1111"
  128.     a["14"]="1110"
  129.     a["13"]="1101"
  130.     a["12"]="1100"
  131.     a["11"]="1011"
  132.     a["10"]="1010"
  133.     a["9"]="1001"
  134.     a["8"]="1000"
  135.     a["7"]="0111"
  136.     a["6"]="0110"
  137.     a["5"]="0101"
  138.     a["4"]="0100"
  139.     a["3"]="0011"
  140.     a["2"]="0010"
  141.     a["1"]="0001"
  142.     a["0"]="0000"
  143.  
  144.     hex=$S
  145.     tarolo=
  146.  
  147.     while test -n "$hex";
  148.     do
  149.         t=${hex:0:1}
  150.         kar=$(echo "ibase=16; $t" | bc)
  151.         tarolo=$tarolo${a[kar]}
  152.         hex=${hex:1}
  153.     done
  154.  
  155.     echo "Eredmény: $tarolo"
  156.     exit
  157. fi
  158.  
  159. if [[ $F == 16 ]] && [[ $C == 10 ]]
  160. then
  161.     printf "Eredmény: %d\n" "0x$S"
  162.     exit
  163. fi
  164.  
  165. #echo $((2#10010101110101010101))
  166. #printf '%x\n' " $((2#1011011101101010101))"
  167. #printf '%x\n' " $((10#127))"
  168.  
  169. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement