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 20 Python
Python编程实现正则删除命令功能
Aug 30 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
浅析PHP与Python进行数据交互
May 15 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
python 多进程共享全局变量之Manager()详解
Aug 15 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
Mar 11 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 Python
对python中arange()和linspace()的区别说明
May 03 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
Python实现爬取网页中动态加载的数据
Aug 17 Python
Python实现仓库管理系统
May 30 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
给多个地址发邮件的类
2006/10/09 PHP
如何判断php数组的维度
2013/06/10 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
基于jquery的15款幻灯片插件
2011/04/10 Javascript
js获取图片大小的函数代码
2011/09/20 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
python将回车作为输入内容的实例
2018/06/23 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
django配置app中的静态文件步骤
2020/03/27 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
店面出租协议书范本
2014/11/28 职场文书
追悼会答谢词
2015/01/05 职场文书
教师学期末个人总结
2015/02/13 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
Java并发编程必备之Future机制
2021/06/30 Java/Android
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server