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


Posted in Python onJune 12, 2019

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 < temp:
        result.append(table[temp % 64])
        temp /= 64
    return ''.join([x for x in reversed(result)])


  def decode_b64(str):
    table = {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5,
         "6": 6, "7": 7, "8": 8, "9": 9,
         "a": 10, "b": 11, "c": 12, "d": 13, "e": 14, "f": 15, "g": 16,
         "h": 17, "i": 18, "j": 19, "k": 20, "l": 21, "m": 22, "n": 23,
         "o": 24, "p": 25, "q": 26, "r": 27, "s": 28, "t": 29, "u": 30,
         "v": 31, "w": 32, "x": 33, "y": 34, "z": 35,
         "A": 36, "B": 37, "C": 38, "D": 39, "E": 40, "F": 41, "G": 42,
         "H": 43, "I": 44, "J": 45, "K": 46, "L": 47, "M": 48, "N": 49,
         "O": 50, "P": 51, "Q": 52, "R": 53, "S": 54, "T": 55, "U": 56,
         "V": 57, "W": 58, "X": 59, "Y": 60, "Z": 61,
         "-": 62, "_": 63}
    result = 0
    for i in xrange(len(str)):
      result *= 64
      result += table[str[i]]
    return result

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进制的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用xlrd模块读写Excel文件的方法
May 06 Python
Python多层嵌套list的递归处理方法(推荐)
Jun 08 Python
PyQt5实现简易计算器
May 30 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
详解python中__name__的意义以及作用
Aug 07 Python
scrapy结合selenium解析动态页面的实现
Sep 28 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
4种非常实用的python内置数据结构
Apr 28 Python
Python中使用ipython的详细教程
Jun 22 Python
Python实现将多张图片合成MP4视频并加入背景音乐
Apr 28 Python
Python可视化神器pyecharts之绘制箱形图
Jul 07 Python
使用python制作一个为hex文件增加版本号的脚本实例
Jun 12 #Python
Python hexstring-list-str之间的转换方法
Jun 12 #Python
对python3.4 字符串转16进制的实例详解
Jun 12 #Python
python版DDOS攻击脚本
Jun 12 #Python
selenium处理元素定位点击无效问题
Jun 12 #Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 #Python
python3.4 将16进制转成字符串的实例
Jun 12 #Python
You might like
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
js实现计算器功能
2020/08/10 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
python设计模式大全
2016/06/27 Python
Python利用IPython提高开发效率
2016/08/10 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
keras 多任务多loss实例
2020/06/22 Python
降低python版本的操作方法
2020/09/11 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
IRO美国官网:法国服装品牌
2018/03/06 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
学校安全检查制度
2014/01/27 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
如何写好开幕词?
2019/06/24 职场文书
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题