当前位置: 首页 > news >正文

bash 将二进制转换为十进制_bash shell实现二进制与十进制数的互转

二进制转十进制#!/bin/bash

#b2d.sh: convert binary number to decimal number

#Usage: ./b2d.sh number

BAD_ARGS=65

WRONG_ARGS=66

ARGS=1 #参数数目

if [ $# -ne $ARGS ]

then

echo "Usage: `basename $0` binary_number"

exit $BAD_ARGS

fi

case $1 in

[01]*) #判断是否为二进制数

count=$(echo $1 | wc -c)

let "count--" #求出所输入的二进制数的位数

i=0

n=$count

result=0

while [ $i -lt $count ]

do

c=$(echo $1 | cut -b$n) #从最低位开始依次得到该位上的数,如1101,将依次得到1、0、1、1

let "result+=c*2**i" #依次累加转换为十进制数

let "i++"

let "n--"

done

echo "The decimal number of $1 is $result."

exit 0

;;

*)

echo "Please run this script with a binary number"

exit $WRONG_ARGS

;;

esac

十进制转二进制#!/bin/bash

#d2b.sh: convert a decimal number to a binary number

#Usage: ./d2b.sh decimal_number

BAD_ARGS=65

WRONG_ARGS=66

ARGS=1 #参数数目

if [ $# -ne $ARGS ]

then

echo "Usage: `basename $0` decimal_number"

exit $BAD_ARGS

fi

function is_positive_int() #用于判断输入是否为正整数,是返回1,否返回0

{

if [ $# -lt 1 ]

then

return 0

fi

if [[ $1 =~ ^[1-9][0-9]*$ ]]

then

return 1

fi

if [[ $1 =~ ^0$ ]]

then

return 1

fi

return 0

}

is_positive_int $1 #调用该函数进行判断

if [ $? -ne 1 ] #不为1,则不是十进制正整数,提示并退出

then

echo "Please run this script with a decimal number."

exit $WRONG_ARGS

else

#echo "$1 is a decimal number."

num=$1

while [ $num -gt 0 ] #辗转相除法

do

let r=num%2

result=$r$result

let num=num/2

done

echo "The binary number of $1 is $result."

exit 0

fi

相关文章:

  • 实体类多层嵌套 遍历_循环运用(多级嵌套结构)
  • 流程设计和优化原则
  • react做h5 例子_【React入门实例(运行于浏览器duan)】
  • XP中用U盘扩充内存
  • 301跳转 https_nginx配置https301跳转
  • php 创建64位的数_使用PHP应用查询SAP HANA Express Edition里的数据
  • 惠普电脑u盘重装系统步骤_惠普U盘重装,惠普电脑U盘一键重装系统方法
  • SQL Server 2005中的SQLCMD工具使用
  • 统计占比_统计局:2019年高等教育在校生中女研究生占比过半
  • 我的个人2007-非工作盘点
  • scritp里怎么传值给php_PHP中的script部分的值怎么传递出来呢?
  • anchor free 目标检测_Anchor Free的目标检测方法--FCOS
  • 《闯关东》
  • 从ca提取keystore_使用CA签发服务器证书的脚本(keystore中)
  • SPCE061A使用时基,实现定时器
  • 「面试题」如何实现一个圣杯布局?
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • LintCode 31. partitionArray 数组划分
  • mac修复ab及siege安装
  • sessionStorage和localStorage
  • SQLServer之创建显式事务
  • 和 || 运算
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 基于HAProxy的高性能缓存服务器nuster
  • 简单数学运算程序(不定期更新)
  • 今年的LC3大会没了?
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 什么软件可以剪辑音乐?
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 通过git安装npm私有模块
  • #pragma data_seg 共享数据区(转)
  • #QT项目实战(天气预报)
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1)SpringCloud 整合Python
  • (16)Reactor的测试——响应式Spring的道法术器
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • ******之网络***——物理***
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • ./configure,make,make install的作用
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core引入性能分析引导优化
  • .NET 药厂业务系统 CPU爆高分析
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .net6 webapi log4net完整配置使用流程
  • .NET企业级应用架构设计系列之应用服务器
  • .NET下的多线程编程—1-线程机制概述