程序功能:利用Python实现任意进制转换器

主要以十进制作为桥梁,利用m进制转十进制,十进制转n进制实现m进制到n进制的转换。

1、m进制转十进制

从最低位(最右)算起,位上的数字乘以本位的权重,加和即得到十进制数。比如101.001(2),转十进制为

2、十进制转n进制

整数部分利用短除法

小数部分利用乘以进制减至1以内的方法,具体说明见十进制转二进制,虽然其中讲的是二进制,但其实对任意进制都适用,只需将2更换为其他数字即可。

我们先将输入的实数以小数点为界拆开, 对两部分加在一起即可

3、其他功能

还添加了转换负数的功能,不过不是补码,单纯的是绝对值的转换再加一个负号而已。

此外,由于十进制转n进制时,并不一定可以使乘上权重的结果为整数,会造成死循环,因此加了一个循环时间限制,防止死循环。为了使结果可读性增加,转化结果超过十位小数时,自动保留十位小数。

以下为代码(设置最高为十六进制,若有更高需求添加waitNumber列表中的字母即可):

#By 青山如墨落画卷
#1、十六进制以内实数任意进制对任意进制的转换
#2、小数位数超过十位保留十位小数
#3、包含负数的转换(是数值的转换而不是补码)
#4、能够实现更高进制的转换:直接增加waitNumber中的字母数量
#算法:其他进制转十进制:对应位相乘.十进制转其他进制:整数部分短除法,小数部分利用乘n取整,顺序排列
import time as t
waitNumber=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]
def demicalSystemToOthers(Number,System):"""输入:十进制数及目标进制输出:目标进制数"""intergerList=[]decimalList=[]result=""decimal=Number-int(Number)interger=int(Number)#整数部分短除法while interger>=System:intergerList.append(waitNumber[interger%System])interger=interger//SystemintergerList.append(waitNumber[interger])#小数部分乘2取整start=t.perf_counter()while decimal!=0:decimal*=SystemdecimalList.append(waitNumber[int(decimal//1)])decimal-=decimal//1#如果转化过程中有死循环,则跳出if t.perf_counter()-start>=0.001:break#将储存数字的列表转换成结果for k in range(len(intergerList)):result+=str(intergerList.pop(-1))if decimalList!=[]:result+="."for k in decimalList:result+=str(k)return resultdef othersToDemicalSystem(NumberandSystem,System):"""输入:数字及其进制输出:转换为十进制"""result=0interger=NumberandSystem[0].split(".")[0]#判断是否有小数部分try:decimal=NumberandSystem[0].split(".")[1]except:decimal="0"#将整数与小数部分分别转换为十进制(乘以对应位权)for i in range(len(interger)):result+=waitNumber.index(interger[i])*(System**(len(interger)-i-1))for j in range(len(decimal)):result+=waitNumber.index(decimal[j])*(System**(-j-1))return result
3
def main():numberAndPreviousSystem=input("请输入要转换的数及其进制(用空格分开):").split(" ")LaterSystem=int(input("请输入转换后的数的进制:"))#判断是否是负数symbol=""if numberAndPreviousSystem[0][0]=="-":numberAndPreviousSystem[0]=numberAndPreviousSystem[0][1:]symbol+="-"previousSystem=int(numberAndPreviousSystem[1])intermediateNumber=othersToDemicalSystem(numberAndPreviousSystem,previousSystem)resultNumber=demicalSystemToOthers(intermediateNumber ,LaterSystem)#若小数位数不足十位直接输出,否则输出十位小数try:print(symbol+resultNumber[:resultNumber.index(".")+11]+"("+str(LaterSystem)+")")except:print(symbol+resultNumber+"("+str(LaterSystem)+")")
main()

Python实现进制转换器相关推荐

  1. python实现进制转换器_python实现进制转换(二、八、十六进制;十进制)

    python实现进制转换(二.八.十六进制:十进制) (一)十进制整数转为二.八.十六进制 1.format实现转换 >>> format(2,"b") # (1 ...

  2. python的进制转换器,Python进制转换

    进制转换: 进制转换是人们利用符号来计数的方法. 进制转换由一组数码符号和两个基本因素"基数"与"位权"构成. 基数是指,进位计数制中所采用的数码(数制中用来表 ...

  3. python实现进制转换器_python实现各进制转换的总结大全

    前言 玩ctf经常遇到进制转换的问题,就正好做一个进制转换总结,分享出来供大家参考学习,下面来一起看看详细的介绍: 字符串与十六进制转换 例如百度ctf 12月的第二场第一个misc 666C6167 ...

  4. python测试脚本 进制转换器_进制转换(用Python实现进制转换器)

    进制类型 进制可以分为以下几种类型: 1.1 二进制 字母B表示 1.2 八进制 字母O表示 1.3 十进制 字母D表示 14.4 十六机制 字母H表示 二进制:逢二进一,只有数字0 1 与十进制的换 ...

  5. 进制转换(用Python实现进制转换器)

    进制类型 进制可以分为以下几种类型: 1.1 二进制 字母B表示 1.2 八进制 字母O表示 1.3 十进制 字母D表示 14.4 十六机制 字母H表示 二进制:逢二进一,只有数字0 1 与十进制的换 ...

  6. 【python实现进制转换器】10进制整数向任意进制转换

    def radix_any():decimal_number = int(input("请输入10进制数"))asciil = int(input("请输入想转换成的进制 ...

  7. python用thinker库制作一个进制转换器(可打包exe)

    进制类型分为: 二进制 字母B表示 八进制 字母O表示 十进制 字母D表示 十六机制 字母H表示 进制转换之间很麻烦,还得计算,如果可以做一个进制转换器多nice,其实也不难,就利用一个tkinter ...

  8. 练习:自撸整数进制转换器(二、八、十六进制转十进制)

    我的CSDN主页 My Python 学习个人备忘录 我的HOT博 整数进制转换器(二.八.十六进制转十进制) 题目 代码运行效果 我的解题思路 转换器完整代码 题目   跟着寒佬整数进制转换,生发自 ...

  9. python 16进制转10进制, 8进制转10进制, 2进制转10进制的方法

    python 16进制转10 进制, 8进制转10进制, 2进制转10进制 可以使用系统自带的 int 方法 具体如下: value = "0x1388" result = int ...

最新文章

  1. rabitMQ优缺点
  2. win10安装oracle12c注意事项,win10系统安装oracle 12c出现ins-30131错误的修复办法
  3. Java比较器概述即代码讲解实现
  4. VS.Net 2003/VC6.0常用快捷键集合
  5. excel两个指标相关性分析_我用Excel发现了数据分析的本质:回归分析
  6. 如何使用webrtc 一
  7. mongodb windows的安装方法和添加到任务管理器中、检测是否成功、增删改查命令...
  8. 21.Linux/Unix 系统编程手册(上) -- 信号:信号处理器函数
  9. javaScript中的变量作用域的闭包处理
  10. php 递归函数 示例,php递归使用示例(php递归函数)_PHP
  11. 实时查看Starlink在轨卫星、地面站数目和分布情况的有趣网站
  12. 新唐M261M262M263系列芯片知识总结归纳(2)
  13. libVLC 播放控制
  14. SpringBoot格式化日期
  15. 九年级计算机课程教案,九年级信息技术 5.2.3《计算机网络》教案
  16. HCIE华为面试-BGP负载分担
  17. SSMS安装失败及解决
  18. 看了CES之后,跳槽到朝阳行业有着落了
  19. 推荐系统常用数据集介绍
  20. 阿里云、蚂蚁区块链医疗解决方案首次应用于未来医院电子处方

热门文章

  1. java-net-php-python-jsp学生会人事管理信息系统计算机毕业设计程序
  2. 2022年12月电子学会青少年软件编程Scratch(二级)等级考试真题解析
  3. Tcl经典报错 之 extra characters after close-quote
  4. 速读《构建之法 现代软件工程》的五个问题
  5. 电子邮件服务建设计算机网络,内蒙古师范大学校园计算机网络电子邮件使用管理规定...
  6. 《爱因斯坦的问题》解答
  7. 投了100份简历,唯一邀请我面试的这一家Android开发公司;是如何对我洗刷的?
  8. Visifire.Charts绑定数据库(MVVM)
  9. libnet编译linux,Linux 网络编程—— libnet 使用指南
  10. sonicwall NSA-2600 防火墙基本介绍