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构造函数及解构函数介绍
Feb 26 Python
Python调用C++程序的方法详解
Jan 24 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
PyQt5每天必学之事件与信号
Apr 20 Python
python实现简单登陆系统
Oct 18 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
python科学计算之scipy——optimize用法
Nov 25 Python
Python面向对象魔法方法和单例模块代码实例
Mar 25 Python
Python虚拟环境venv用法详解
May 25 Python
Python结合Window计划任务监测邮件的示例代码
Aug 05 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
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
php Session无效分析资料整理
2016/11/29 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
JavaScript 异步调用
2017/10/25 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
高校自主招生自荐信
2013/12/09 职场文书
军训的自我鉴定
2013/12/10 职场文书
病媒生物防治方案
2014/05/13 职场文书
新文化运动的口号
2014/06/21 职场文书
小学校长汇报材料
2014/08/20 职场文书
战友聚会致辞
2015/07/28 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang