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网络编程学习笔记(一)
Jun 09 Python
Python采用socket模拟TCP通讯的实现方法
Nov 19 Python
python使用pil生成缩略图的方法
Mar 26 Python
使用Python神器对付12306变态验证码
Jan 05 Python
让python 3支持mysqldb的解决方法
Feb 14 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
快速了解Python中的装饰器
Jan 11 Python
Python实现PS图像调整之对比度调整功能示例
Jan 26 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
python基础 range的用法解析
Aug 23 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 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
escape unescape的php下的实现方法
2007/04/27 PHP
php注销代码(session注销)
2012/05/31 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
Python 装饰器使用详解
2017/07/29 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
python实现汽车管理系统
2018/11/30 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
python opencv肤色检测的实现示例
2020/12/21 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
python模块内置属性概念及实例
2021/02/18 Python
Born鞋子官网:Born Shoes
2017/04/06 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
道德演讲稿
2014/05/21 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
2014年业务工作总结
2014/11/17 职场文书
人事主管岗位职责
2015/02/04 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
升学宴家长答谢词
2015/09/29 职场文书
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers