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 uuid模块使用实例
Apr 08 Python
深度定制Python的Flask框架开发环境的一些技巧总结
Jul 12 Python
Python中的id()函数指的什么
Oct 17 Python
Python多线程扫描端口代码示例
Feb 09 Python
替换python字典中的key值方法
Jul 06 Python
flask入门之表单的实现
Jul 18 Python
使用Python实现租车计费系统的两种方法
Sep 29 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
Pytorch之view及view_as使用详解
Dec 31 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 Python
python删除csv文件的行列
Apr 06 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 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中取得文件的后缀名?
2012/02/20 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
Python 文件和输入输出小结
2013/10/09 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
Python中字符串List按照长度排序
2019/07/01 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
Python3开发环境搭建详细教程
2020/06/18 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
简短大学毕业感言
2014/01/18 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
暑期学习心得体会
2014/09/02 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
医生个人年度总结
2015/02/28 职场文书
2015年公司工作总结
2015/04/25 职场文书
小学记事作文之200字
2019/08/06 职场文书
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python
改造DE1103三步曲
2022/04/07 无线电