Python字符串转数字
import binascii
s = 'test123456test'
str_16 = binascii.b2a_hex(s.encode('utf-8')) # 字符串转16进制
print(str_16)
def baseN(num, b):
return ((num == 0) and "0") or \
(baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])
num_10 = int(str_16, 16) # 16进制转10进制
print(num_10)
str_32 = baseN(num_10, 32) # 10进制转32进制
print(str_32)
num_10_2 = int(str_32, 32) # 32进制转10进制
print(num_10_2)
num_16 = hex(num_10) # 10进制转16进制数
print(num_16)
ss = str_16.decode('hex') # 16进制串转字符串
print(ss)
执行结果
7465737431323334353674657374
2360797289681380981751517517542260
1q6asrk64p36d1l6pq6asrk
2360797289681380981751517517542260
0x7465737431323334353674657374L
test123456test
10进制转n进制
def base10toN(num,n):
"""Change a to a base-n number.
Up to base-36 is supported without special notation."""
num_rep={10:'a',
11:'b',
12:'c',
13:'d',
14:'e',
15:'f',
16:'g',
17:'h',
18:'i',
19:'j',
20:'k',
21:'l',
22:'m',
23:'n',
24:'o',
25:'p',
26:'q',
27:'r',
28:'s',
29:'t',
30:'u',
31:'v',
32:'w',
33:'x',
34:'y',
35:'z'}
new_num_string=''
current=num
while current!=0:
remainder=current%n
if 36>remainder>9:
remainder_string=num_rep[remainder]
elif remainder>=36:
remainder_string='('+str(remainder)+')'
else:
remainder_string=str(remainder)
new_num_string=remainder_string+new_num_string
current=current/n
return new_num_string
进阶版
def baseN(num, b):
return ((num == 0) and "0") or \
(baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])
64进制
def encode_b64(n):
table = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_'
result = []
temp = n
if 0 == temp:
result.append('0')
else:
while 0