python 进制转换
十进制转其他进制
#十进制数
int_str = 100
#2进制 返回值以’ob‘开头
bin_str = bin(int_str )
#8进制 数字较大时,返回值以’L‘结尾
oct_str = oct(int_str )
#16进制 数字较大时,返回值‘0x’开头,以‘L’结尾
hex_str = hex(int_str )
#任意进制
def transformFormat(int_str ,formatN):
#返回每个位数上的数值的集合
b=[]
while True:
s=int_str //formatN # 商
y=int_str %formatN # 余数
b=b+[y]
if s==0:
break
n=s
b.reverse()
return b
其他进制转10进制:
#2进制
int_str = int(bin_str,2)
#8进制
int_str = int(oct_str,2)
#16进制
int_str = int(hex_str,2)
#任意进制
def formatTransform(n,formatN):
result = 0;
n = str(n)
for i in range(0,len(n)):
result += int(n[i])*(formatN**(len(n)-i-1))
return result;
字符串转2进制/10进制/16进制
#2进制编码
def encode(s):
return ' '.join([bin(ord(c)).replace('0b', '') for c in s])
#2进制解码
def decode(s):
# s=‘10000111 00111010’
return ''.join([chr(i) for i in [int(b, 2) for b in s.split(' ')]])
#16进制
hex_str= s.encode('hex')
#转16进制 再转成十进制
import binascii
string = '前方三点十五分方向,发现敌方目标潜艇,五分钟内给我打他个稀巴烂,回来后给你请功,赏你一瓶二锅头'
string_int = int(string.encode('hex'),16)
print string_int
int_string = hex(string_int)[2:-1].decode('hex')
print int_string