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

进制类型

进制可以分为以下几种类型;

1.1 二进制 字母B表示

1.2 八进制 字母O表示

1.3 十进制 字母D表示

14.4 十六机制 字母H表示

二进制:逢二进一,只有数字0 1

与十进制的换算关系如下;

十进制转换为二进制(整数)

(最后一个一可以直接写上去)

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

2.十进小数制转二进

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

(如果是负数的话只需要在前面加入负号即可)

1.3二进制转十进制整数

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

1.4二进制转十进制小数

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

八进制(0,1,2,3,4,5,6,7)

十六进制 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

在八进制与十六进制之间转换为十进制都是一样的。

具体的可以看到如下python代码

”’用于二进制转换学习的练习代码相关代码和更多笔记教程可在 https://blog.csdn.net/FUTEROX 获取”’

”’多造轮子多学习 ”’

def int_to_B(input_):

”’对十进制数进行公式运算处理整数部分”’

flag=True

x=[]

qu_mo = input_

qu_yu = input_

while flag:

qu_yu=qu_mo%2

x.append(qu_yu)

qu_mo=qu_mo//2

if qu_mo==1:

x.append(qu_mo)

flag=False

number_int=”

for i in x[::-1]:

number_int=number_int+str(i)

return number_int

#此时返回的是一个整数部分的二进制数字

#print(number_int)

def float_to_B(f,jindu=4):

”’默认精度为四”’

B=[]#存放整数部分

for i in range(jindu):

f=f*2

b_zhengshu=int(f)

B.append(b_zhengshu)

if b_zhengshu !=0:

f=f-b_zhengshu

float_n=”

for i in B:

float_n=float_n+str(i)

return float_n

if __name__==”__main__”:

print(“欢迎使用进制转换工具”)

print(‘如果你想退出请按Q(必须为大写)’)

flag=True

while flag:

input_ = str(input(“请你输入一个十进制的数字;”))

if input_==”Q”:

#防止用户误操作必须使用大写字母Q退出

print(“感谢你的使用!!!”)

flag=False

”’对输入的数字进行判断是否为整数还是小数

如果是小数则对她进行分割,由于英文水平的问题,

变量名多采用中文拼音进行命名”’

if “.” in input_:

nub = []

for i in input_:

nub.append(i)

if nub[0] != ‘0’:

way_point = nub.index(“.”)

int_ = nub[0:way_point]

int_un = ”

for i in int_:

int_un = int_un + str(i)

# print(int_un)

int_input = int(int_un)

int_part = int_to_B(int_input)

float_ = nub[way_point:]

float_part = ”

for i in float_:

float_part = float_part + str(i)

float_part = “0” + float_part

float_part = float(float_part)

float_part = float_to_B(float_part)

# 开始整合字符串,两个函数运算后产生的都是字符串类型

last_number = int_part + ‘.’ + float_part

last_number = float(last_number)

print(last_number)

elif nub[0] == ‘0’:

number = float_to_B(float(input_))

number = ‘0.’ + number

number = float(number)

print(number)

elif “.” not in input_ and input_!=”Q”:

input_ = int(input_)

reason = int(int_to_B(input_))

print(reason)

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

可以看到上面的算法将十进制转化为了二进制,那么其实只需要将% 2和 //2换成 %8,//8等等。

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

不同进制间的转换

1.1二进制 → 八进制

先,看到下图的对应表

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

例:将二进制的(11010111.0100111)B转换为八进制的步骤如下:

小数点前111 = 7;

010 = 2;

11补全为011,011 = 3;

小数点后010 = 2;

011 = 3;

1补全为100,100 = 4;

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

当然你也可以二进制换十进制再换八进制。

1.2 八进制 → 二进制

方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。

例:将八进制的(327)O转换为二进制的步骤如下:

3 = 011;

2 = 010;

7 = 111;

读数,读数从高位到低位,011010111,即(327)O=(11010111)B

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

1.3 八进制 → 十六进制

方法:将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。

例:将八进制的(327)O转换为十六进制的步骤如下:

3 = 011;

2 = 010;

7 = 111;

0111 = 7;

1101 = D;

读数,读数从高位到低位,D7,即(327)O=(D7)H。

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

etc…

二进制加减(补充)

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

原文链接:https://blog.csdn.net/FUTEROX/article/details/108806152

    原文作者:monte3card
    原文地址: https://blog.csdn.net/weixin_35650074/article/details/112902779
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞