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 开发Activex组件方法
Nov 08 Python
将Python的Django框架与认证系统整合的方法
Jul 24 Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
python绘制多个曲线的折线图
Mar 23 Python
python之cv2与图像的载入、显示和保存实例
Dec 05 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
Python实现FLV视频拼接功能
Jan 21 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
python 下划线的不同用法
Oct 24 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
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
js实现分页功能
2017/05/24 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
详解Django中的权限和组以及消息
2015/07/23 Python
浅谈Python的文件类型
2016/05/30 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
Python3中列表list合并的四种方法
2019/04/19 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
资深地理教师自我评价
2013/09/21 职场文书
大学生学习自我评价
2014/01/13 职场文书
元旦晚会感言
2014/03/12 职场文书
调查研究项目计划书
2014/04/29 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
信息技术研修心得体会
2016/01/08 职场文书
如何用python反转图片,视频
2021/04/24 Python
Minikube搭建Kubernetes集群
2022/03/31 Servers