好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Python任意字符串转16, 32, 64进制的方法

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

Java字符串转数字

BigInteger integer = new BigInteger(hexString.toString(), 16); integer.toString(32);

import java.math.BigInteger; public class Main { public static void main(String[] argv) throws Exception { BigInteger bi = new BigInteger("1023"); bi = new BigInteger("1111111111", 2); String s = bi.toString(2); System.out.println(s); bi = new BigInteger("1000", 8); System.out.println(s = bi.toString(8)); bi = new BigInteger("1023"); s = bi.toString(); System.out.println(s); bi = new BigInteger("3ff", 16); s = bi.toString(16); System.out.println(s); } }

以上这篇Python任意字符串转16, 32, 64进制的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持自学php网。

查看更多关于Python任意字符串转16, 32, 64进制的方法的详细内容...

  阅读:37次