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中的文件和目录操作实现代码
Mar 13 Python
python实现的阳历转阴历(农历)算法
Apr 25 Python
Python注释详解
Jun 01 Python
Python中元组,列表,字典的区别
May 21 Python
Python3 socket同步通信简单示例
Jun 07 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
Django使用httpresponse返回用户头像实例代码
Jan 26 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
django 多对多表的创建和插入代码实现
Sep 09 Python
Python经典五人分鱼实例讲解
Jan 04 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 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
Terran兵种介绍
2020/03/14 星际争霸
PHP游戏编程25个脚本代码
2011/02/08 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
Python连接PostgreSQL数据库的方法
2016/11/28 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
详解python变量与数据类型
2020/08/25 Python
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
五一促销活动总结
2014/07/01 职场文书
国庆促销活动总结
2014/08/29 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书