python怎么转换进制_python 转换进制(2-62进制)

首先说说62进制的表达方式:

0-9依然延续10进制的0-9表达,然后是小写的字母a-z,再大写的字母A-Z

即35[10进制]=z[62进制];61[10进制]=Z[62进制];

因为带字母,因此定义以字符串形式输入#coding=gbk

def f(nx,x1,x):

#n为待转换的十进制数,x为机制,取值为2-62

a=['0','1','2','3','4','5','6','7','8','9',

'a','b','c','d','e','f','g','h','i','j','k',

'l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',

'A','B','C','D','E','F','G','H','I','J','K',

'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']

nx=str(nx)

b1=list(nx)

print (nx,"[",x1,"]==[",x,"] ",end='')

b2=[]

for i in b1:

for i1 in range(0,62):

if a[i1]==i:

b2=b2 [i1]

if i1>x1:

print (i,"错误定义")

b2.reverse()

#print(b2)

n1=0

n2=1

for i in b2:

n1=n1 int(i)*(pow(x1,n2-1)) #pow(x, n),即计算 x 的 n 次幂函数

n2=n2 1

#print (n1,n2)

n=n1

#print(n)

b=[]

while True:

s=n//x#商

y=n%x#余数

b=b [y]

if s==0:

break

n=s

b.reverse() #reverse() 函数用于反向列表中元素,由个,十百转为百十个

bd=""

for i in b:

#print(a[i],end='')

bd=bd a[i]

print (bd)

return bd

chun='zF4mOFpN7A'

print (chun)

print (f(chun[0:2],62,10) f(chun[2:6],62,10) f(chun[6:11],62,10))

for i in range(0,62):

f(str(i),10,62)

#F(str,str的进制,需要转换的进制)

运行结果如下:

zF4mOFpN7A

zF [ 62 ][ 10 ] 2211

4mOF [ 62 ][ 10 ] 1041021

pN7A [ 62 ][ 10 ] 6147026

221110410216147026

0 [ 10 ][ 62 ] 0

1 [ 10 ][ 62 ] 1

2 [ 10 ][ 62 ] 2

3 [ 10 ][ 62 ] 3

4 [ 10 ][ 62 ] 4

5 [ 10 ][ 62 ] 5

6 [ 10 ][ 62 ] 6

7 [ 10 ][ 62 ] 7

8 [ 10 ][ 62 ] 8

9 [ 10 ][ 62 ] 9

10 [ 10 ][ 62 ] a

11 [ 10 ][ 62 ] b

12 [ 10 ][ 62 ] c

13 [ 10 ][ 62 ] d

14 [ 10 ][ 62 ] e

15 [ 10 ][ 62 ] f

16 [ 10 ][ 62 ] g

17 [ 10 ][ 62 ] h

18 [ 10 ][ 62 ] i

19 [ 10 ][ 62 ] j

20 [ 10 ][ 62 ] k

21 [ 10 ][ 62 ] l

22 [ 10 ][ 62 ] m

23 [ 10 ][ 62 ] n

24 [ 10 ][ 62 ] o

25 [ 10 ][ 62 ] p

26 [ 10 ][ 62 ] q

27 [ 10 ][ 62 ] r

28 [ 10 ][ 62 ] s

29 [ 10 ][ 62 ] t

30 [ 10 ][ 62 ] u

31 [ 10 ][ 62 ] v

32 [ 10 ][ 62 ] w

33 [ 10 ][ 62 ] x

34 [ 10 ][ 62 ] y

35 [ 10 ][ 62 ] z

36 [ 10 ][ 62 ] A

37 [ 10 ][ 62 ] B

38 [ 10 ][ 62 ] C

39 [ 10 ][ 62 ] D

40 [ 10 ][ 62 ] E

41 [ 10 ][ 62 ] F

42 [ 10 ][ 62 ] G

43 [ 10 ][ 62 ] H

44 [ 10 ][ 62 ] I

45 [ 10 ][ 62 ] J

46 [ 10 ][ 62 ] K

47 [ 10 ][ 62 ] L

48 [ 10 ][ 62 ] M

49 [ 10 ][ 62 ] N

50 [ 10 ][ 62 ] O

51 [ 10 ][ 62 ] P

52 [ 10 ][ 62 ] Q

53 [ 10 ][ 62 ] R

54 [ 10 ][ 62 ] S

55 [ 10 ][ 62 ] T

56 [ 10 ][ 62 ] U

57 [ 10 ][ 62 ] V

58 [ 10 ][ 62 ] W

59 [ 10 ][ 62 ] X

60 [ 10 ][ 62 ] Y

61 [ 10 ]==[ 62 ] Z

用法如下:f(str,str的进制,需要转换的进制),如f(‘zf’,62,16)即表示62进制的zf,转化为16进制的表达数

程序的扩展:

只要把a[]中的list扩展字符即可,如可使用的汉字’壹’,‘甲乙丙丁’,'子丑寅卯’都可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值