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 相关文章推荐
Django返回json数据用法示例
Sep 18 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
python机器学习理论与实战(四)逻辑回归
Jan 19 Python
利用Pandas 创建空的DataFrame方法
Apr 08 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
Python 加密与解密小结
Dec 06 Python
python 日期排序的实例代码
Jul 11 Python
python框架flask表单实现详解
Nov 04 Python
Python中的引用和拷贝实例解析
Nov 14 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
python实现杨辉三角的几种方法代码实例
Mar 02 Python
Python实战之用tkinter库做一个鼠标模拟点击器
Apr 27 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制作静态网站的模板框架(三)
2006/10/09 PHP
php mysql数据库操作类
2008/06/04 PHP
用PHP将数据导入到Foxmail的实现代码
2010/09/05 PHP
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
高级护理专业大学生求职信
2013/10/24 职场文书
应届生自我鉴定
2013/12/11 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书