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复制文件的方法实例详解
May 22 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
Python selenium 三种等待方式详解(必会)
Sep 15 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
详解python发送各类邮件的主要方法
Dec 22 Python
Python实现的用户登录系统功能示例
Feb 05 Python
详解python的四种内置数据结构
Mar 19 Python
python3获取url文件大小示例代码
Sep 18 Python
Python中的延迟绑定原理详解
Oct 11 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
细说NumPy数组的四种乘法的使用
Dec 18 Python
python 图像增强算法实现详解
Jan 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
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
js 匿名调用实现代码
2009/06/19 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
haskell实现多线程服务器实例代码
2013/11/26 Python
Python MySQLdb模块连接操作mysql数据库实例
2015/04/08 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
python实现邮件自动发送
2019/08/10 Python
Python 导入文件过程图解
2019/10/15 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
小学教师师德师风自我剖析材料
2014/09/29 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
2014年技术部工作总结
2014/12/12 职场文书