python中的进制转换+高低位互换

本文介绍Python中不同进制之间的转换方法,包括十进制与十六进制、二进制之间的转换,以及如何使用格式化输出去除或保留特定格式。此外,还介绍了如何实现十六进制数的高低位互换。

主要记录python中的各进制转换,以及高低位互换代码

一.进制转换

先说一下格式符(字符串格式化输出):格式符为真实值预留位置,并控制显示的格式。
格式符可以包含有一个类型码,用以控制显示的类型,如下

格式符号含义
%s字符串 (采用str()的显示)
%r字符串 (采用repr()的显示)
%c单个字符
%b二进制整数
%d十进制整数
%o八进制整数
%x十六进制整数
%e指数 (基底写为e)
%E指数 (基底写为E)
%f浮点数
%F浮点数,与上相同
%g指数(e)或浮点数 (根据显示长度)
%G指数(E)或浮点数 (根据显示长度)
%%%%

1.将10进制转16

10进制转16进制一般有以下方法:
用hex()函数

a  = 11   #读取到10进制
print(type(a))
b = hex(a)     #转为16进制(为str)
print(b)    #b=0x10

‘’‘此时得到的10进制带有格式符,如想去掉格式符,可继续运行以下代码’‘’
len = len(b)
if len ==6:  #将'0x10'变为'0010'    '0x10f0'变为'10f0    '0xf10'变为'0f10'   '0xffff'变为'ffff'
   c = ('%06x' % int(b, 16))  # 得到'00ffff'
   print(c)
   print(type(c))
   d = c[2:6]
   print(d)
   print(type(d))

if len ==5:
   c = ('%05x' % int(b, 16))
   print(c)
   print(type(c))
   d = c[1:5]
   print(d)

if len ==4:
   c = ('%04x' % int(b, 16))
   print(c)
   print(type(c))
   d = c[0:4]
   print(d)

if len ==3:
   c = ('%03x' % int(b, 16))
   print(c)
   print(type(c))
   d = c[0:3]
   print(d)
   
   #输出00b

使用’{:x}'.format(a) 格式化(这种转换方法不会有格式符)

a = 11
b = '{:x}'.format(a)
print(b)  

 #输出b

如需保留位,使用{:032x}'.format(a) 格式化

a = 11
b = '{:032x}'.format(a)
print(b)  

 #输出0000000000000000000000000000000b

2.将10进制转2

使用bin()函数

a = 11
b = bin(a)
print(b)

 #输出0b1011

使用’{:b}'.format(a) 格式化(这种转换方法不会有格式符)

a = 11
b = '{:b}'.format(a)
print(b)

 #输出1011

有时需要指令输出位数,并高位补零(去掉0即高位不补零)

a = 3
b = '{:03b}'.format(a)
print(b)

 #输出011

3.将各进制转10

使用int()函数,int() 方法的语法为:
x – 字符串或数字。
base – 进制数,默认十进制

class int(x, base=10)

以下展示了使用 int() 方法的实例:


>>>int()               # 不传入参数时,得到结果0
0
>>> int(3)
3
>>> int(3.6)
3
>>> int('12',16)        # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>> int('0xa',16)  
10  
>>> int('10',8)  
8

二.高低位转换

16进制高低位互换 后转10进制

h = '0011'
list_1 = []            #建立空列表
for i in range(0, len(h), 2):
    list_1 .append(h[i:i + 2])     #获得['00','11']
list_1 .reverse()               #获得['11','00']
list_1_str= int(''.join(da), 16)     #转换为10进制
print(list_1_str)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值