defbin_to_dec(bin_str):bin=[int(n)for n in bin_str ]
dec =[bin[-i -1]* math.pow(2, i)for i inrange(len(bin))]returnint(sum(dec))
十进制转二进制
defdec_to_bin(dec):bin=[]while dec /2>0:bin.append(str(dec %2))
dec = dec //2bin.reverse()return''.join(bin)
十进制转十六进制
defdec_to_hex(dec):hex=[]while dec /16>0:hex.append(dec %16)
dec = dec //16hex.reverse()return''.join([chr(n +55)if n >9elsechr(n +48)for n inhex])
十六进制转十进制
defhex_to_dec(hex_str):hex=[ord(n)-55if n inlist("ABCDEF")elseord(n)-48for n in hex_str.upper()]
dec =[hex[-i -1]* math.pow(16, i)for i inrange(len(hex))]returnint(sum(dec))
二进制转十六进制
#这里偷懒了~,原本思路是每四位二进制对应一个十六进制的数#例如: 1000 0100 0010 0001(2)=8421(16)#这里先调用2转10,再调用10转16defbin_to_hex(bin_str):
dec = bin_to_dec(bin_str)hex= dec_to_hex(dec)returnhex