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实现的去除win下文本文件头部BOM的代码
Feb 10 Python
centos系统升级python 2.7.3
Jul 03 Python
Python的pycurl包用法简介
Nov 13 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
详解Python中的四种队列
May 21 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
Python 打印中文字符的三种方法
Aug 14 Python
如何使用python把ppt转换成pdf
Jun 29 Python
如何不用安装python就能在.NET里调用Python库
Jul 12 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
python将三维数组展开成二维数组的实现
Nov 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
建站常用13种PHP开源CMS比较
2009/08/23 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
vue实现计步器功能
2019/11/01 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
python实现simhash算法实例
2014/04/25 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
购买大码女装:Lane Bryant
2016/09/07 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
应届生财务会计求职信
2013/11/05 职场文书
怎样写好自我鉴定
2013/12/04 职场文书
教师新年寄语
2014/04/03 职场文书
我爱读书演讲稿
2014/05/07 职场文书
内科护士节演讲稿
2014/09/11 职场文书
网络营销计划
2015/01/17 职场文书
工资证明格式模板
2015/06/12 职场文书
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技