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设置windows桌面壁纸的实现代码
Jan 28 Python
Python 正则表达式(转义问题)
Dec 15 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
win7下python3.6安装配置方法图文教程
Jul 31 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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 文章中的远程图片采集到本地的代码
2009/07/30 PHP
php多任务程序实例解析
2014/07/19 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
让textarea自动调整大小的js代码
2011/04/12 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
javascript模拟命名空间
2015/04/17 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
2020/03/06 Python
python 两种方法删除空文件夹
2020/09/29 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
市三好学生主要事迹
2014/01/28 职场文书
上课打牌的检讨书
2014/02/15 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
保洁员岗位职责
2015/02/04 职场文书
消防安全月活动总结
2015/05/08 职场文书
企业培训简报范文
2015/07/20 职场文书
远程教育学习心得体会
2016/01/23 职场文书
创业计划书之面包店
2019/09/12 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python