• [转]linux下进制转换的shell脚本


    1. #!/bin/bash  
    2. while true  
    3. do  
    4. echo "#############################################################"  
    5. echo "# Author:                netcat                             #"  
    6. echo "# Lable:                 jinzhi.sh                          #"  
    7. echo "# QQ:                    297020555                          #"  
    8. echo "# Create Date:           2011-06-17                         #"  
    9. echo "# Version:               v1.0                               #"  
    10. echo "#############################################################"  
    11. echo ""  
    12. echo "1  2 ---> 8"     #二进制转换成八进制  
    13. echo "2  2 ---> 10"    #二进制转换成十进制   
    14. echo "3  2 ---> 16"    #二进制转换成十六进制    
    15. echo "4  8 ---> 2"     #八进制转换成二进制   
    16. echo "5  8 ---> 10"    #八进制转换成十进制  
    17. echo "6  8 ---> 16"    #八进制转换成十六进制  
    18. echo "7  10 ---> 2"    #十进制转换成二进制  
    19. echo "8  10 ---> 8"    #十进制转换成八进制  
    20. echo "9  10 ---> 16"   #十进制转换成十六进制  
    21. echo "10 16 ---> 2"    #十六进制转换成二进制  
    22. echo "11 16 ---> 8"    #十六进制转换成八进制  
    23. echo "12 16 ---> 10"   #十六进制转换成十进制  
    24. echo "13   exit"       #退出   
    25. echo ""  
    26. echo "enter your select:"  #输入选择  
    27. read ans                   #读取选择的值,赋值给ans  
    28. case $ans in               #读取$ans的值  
    29. 1)                         #如果ans为1时  
    30. read -p  "enter your num:" num #输入你要转换的数,赋值给num  
    31. a=`echo $num|tr "[2-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`  #对num进行判断  
    32. if [ $num != $a ]   #如果num不等于a  
    33. then  
    34. echo -e "\033[40;31;5m failt \033[0m"  #说明输入的num值不符合二进制数的标准(0和1)    
    35. sleep 2          #停顿2s  
    36. else              #否则的话,num符合二进制的标准  
    37. result=`echo "obase=8;ibase=2;$num"|bc`  #把num转换成八进制,赋值给result  
    38. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m" #输出result的值  
    39. sleep 4     #停顿4s  
    40. fi  
    41. ;;  
    42. 2)  
    43. read -p  "enter your num:" num  
    44. a=`echo $num|tr "[2-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`  
    45. if [ $num != $a ]  
    46. then  
    47. echo -e "\033[40;31;5m failt \033[0m"  
    48. sleep 2  
    49. else  
    50. result=`echo "obase=10;ibase=2;$num"|bc`  #需要注意:obase在前,ibase在后,不然会出错  
    51. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    52. sleep 4  
    53. fi  
    54. ;;  
    55. 3)  
    56. read -p  "enter your num:" num  
    57. a=`echo $num|tr "[2-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`  
    58. if [ $num != $a ]  
    59. then  
    60. echo -e "\033[40;31;5m failt \033[0m"  
    61. sleep 2  
    62. else  
    63. result=`echo "obase=16;ibase=2;$num"|bc`  
    64. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    65. sleep 4  
    66. fi  
    67. ;;  
    68. 4)  
    69. read -p  "enter your num:" num  
    70. a=`echo $num|tr "[8-9][a-z][A-Z]" "[4-5][A-Z][a-z]"` #判断是否符合八进制标准  
    71. if [ $num != $a ]  
    72. then  
    73. echo -e "\033[40;31;5m failt \033[0m"  
    74. sleep 2  
    75. else  
    76. result=`echo "obase=2;ibase=8;$num"|bc`  
    77. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    78. sleep 4  
    79. fi  
    80. ;;  
    81. 5)  
    82. read -p  "enter your num:" num  
    83. a=`echo $num|tr "[8-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`  
    84. if [ $num != $a ]  
    85. then  
    86. echo -e "\033[40;31;5m failt \033[0m"  
    87. sleep 2  
    88. else  
    89. result=`echo "obase=10;ibase=8;$num"|bc`  
    90. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    91. sleep 4  
    92. fi  
    93. ;;  
    94. 6)  
    95. read -p  "enter your num:" num  
    96. a=`echo $num|tr "[8-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`   
    97. if [ $num != $a ]  
    98. then  
    99. echo -e "\033[40;31;5m failt \033[0m"  
    100. sleep 2  
    101. else  
    102. result=`echo "obase=16;ibase=8;$num"|bc`  
    103. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    104. sleep 4  
    105. fi  
    106. ;;  
    107. 7)  
    108. read -p  "enter your num:" num  
    109. a=`echo $num|tr "[a-z][A-Z]" "[A-Z][a-z]"` #判断是否符合十进制标准  
    110. if [ $num != $a ]  
    111. then  
    112. echo -e "\033[40;31;5m failt \033[0m"  
    113. sleep 2  
    114. else  
    115. result=`echo "obase=2;ibase=10;$num"|bc`  
    116. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    117. sleep 4  
    118. fi  
    119. ;;  
    120. 8)  
    121. read -p  "enter your num:" num  
    122. a=`echo $num|tr "[a-z][A-Z]" "[A-Z][a-z]"`  
    123. if [ $num != $a ]  
    124. then  
    125. echo -e "\033[40;31;5m failt \033[0m"  
    126. sleep 2  
    127. else  
    128. result=`echo "obase=8;ibase=10;$num"|bc`  
    129. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    130. sleep 4  
    131. fi  
    132. ;;  
    133. 9)  
    134. read -p  "enter your num:" num  
    135. a=`echo $num|tr "[a-z][A-Z]" "[A-Z][a-z]"`  
    136. if [ $num != $a ]  
    137. then  
    138. echo -e "\033[40;31;5m failt \033[0m"  
    139. sleep 2  
    140. else  
    141. result=`echo "obase=16;ibase=10;$num"|bc`  
    142. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    143. sleep 4  
    144. fi  
    145. ;;  
    146. 10)  
    147. read -p  "enter your num:" num  
    148. a=`echo $num|tr "[g-z]" "[G-Z]"`  #判断是否符合十六进制标准  
    149. if [ $num != $a ]  
    150. then  
    151. echo -e "\033[40;31;5m failt \033[0m"  
    152. sleep 2  
    153. else  
    154. num=`echo $num|tr "[a-f]" "[A-F]"` #不知道为什么,十六进制只是别大写字母,所以在这把小写的转成大写,大写的不变  
    155. result=`echo "obase=2;ibase=16;$num"|bc`  
    156. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    157. sleep 4  
    158. fi  
    159. ;;  
    160. 11)  
    161. read -p  "enter your num:" num  
    162. a=`echo $num|tr "[g-z]" "[G-Z]"`  
    163. if [ $num != $a ]  
    164. then  
    165. echo -e "\033[40;31;5m failt \033[0m"  
    166. sleep 2  
    167. else  
    168. num=`echo $num|tr "[a-f]" "[A-F]"`  
    169. result=`echo "obase=8;ibase=16;$num"|bc`  
    170. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    171. sleep 4  
    172. fi  
    173. ;;  
    174. 12)  
    175. read -p  "enter your num:" num  
    176. a=`echo $num|tr "[g-z]" "[G-Z]"`  
    177. if [ $num != $a ]  
    178. then  
    179. echo -e "\033[40;31;5m failt \033[0m"  
    180. sleep 2  
    181. else  
    182. num=`echo $num|tr "[a-f]" "[A-F]"`  
    183. result=`echo "obase=10;ibase=16;$num"|bc`  
    184. echo -e "\033[40;32;1m result is \033[40;31;5m $result\033[0m"  
    185. sleep 4  
    186. fi  
    187. ;;  
    188. 13)  
    189. exit  
    190. ;;  
    191. *)  
    192. echo -e "\033[40;31;5m failt \033[0m"  
    193. sleep 2  
    194. ;;  
    195. esac  
    196. done 

    下面给大家截个图:

     

     关于进制转换的问题 :   http://297020555.blog.51cto.com/1396304/591988
    关于echo输出颜色的问题:http://297020555.blog.51cto.com/1396304/591943


    这个脚本写的比较粗糙,很多内容都不完善,所以拿出来,让大家给点建议。

    在过程中遇到个问题,感觉解决的不是很好,希望大家给点意见。

    怎么判断输入的内容是否符合二进制标准(0和1)?
    我是这么解决的:
    a=`echo $num|tr "[2-9][a-z][A-Z]" "[4-5][A-Z][a-z]"`
    如果num和a的值相同,则符合要求。

    http://297020555.blog.51cto.com/1396304/592030

    作者:feiskyer 发表于2011-12-8 12:18:04 原文链接
    阅读:9 评论:0 查看评论
  • 相关阅读:
    java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
    JAVA日期处理(Timestamp)
    使用JS截取字符串函数详解
    jQuery获取select option
    JAVA获取oracle中sequences的最后一个值
    <s:iterator> 序号
    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
    zjoi2018day1 游记
    hihocoder 后缀自动机五·重复旋律8 求循环同构串出现的次数
    hihocoder 1457 后缀自动机四·重复旋律7 求不同子串的和
  • 原文地址:https://www.cnblogs.com/feisky/p/2310373.html
Copyright © 2020-2023  润新知