【python函数】10进制_转_62进制(或者其他任意进制)
我是一名测试开发工程师(全栈),作品有全终端自动化测试框架wyTest,未羽研发测试管理平台,欢迎同行交流。
一、情况说明:
- 为什么是62进制:所有的数字+字母,总共是62个,首次创建该函数的目的是为了缩短递增数值的长度。
- 扩展:你也可以加入更多的符号,使其变成62+进制,或者其他更少的进制,或者使用乱序,形成自己的特殊加密进制
- 原理:利用了除法运算的规则来进行不同进制间的转换,所以最后需要使用 reversed进行倒序。
二、封装成方便维护和使用的函数:
#!/usr/bin/env/python3
# coding=utf-8
# @Time : 2024-06-28 23:07:14
# @Author : weiyv_cn@163.com
# @File : dataFun.py
# @模块 : 数据处理
import json
class DataFun:
# <editor-fold 62进制转换>
@staticmethod
def to_base62(num: int):
"""
@功能: 62进制转换
@调用: DataFun.to_base62
:param num: 必选/可选;int类型;数字;
:return: string类型
"""
table = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = []
if num == 0:
result.append('0')
else:
while num > 0:
result.append(table[num % 62])
num //= 62
return ''.join([x for x in reversed(result)])
# </editor-fold>
# <editor-fold 其他任意进制转换>
@staticmethod
def to_base_any(num: int, jin: int = 71):
"""
@功能: 任意进制转换
@调用: DataFun.to_base62
:param num: 必选;int类型;数字;
:param jin: 可选;int类型;进制数值,最大71;
:return: string类型
"""
table = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,./<>?;:[]{}|`~!@#$%^&*()-_+="
result = []
if num == 0:
result.append('0')
else:
while num > 0:
result.append(table[num % jin])
num //= jin
return ''.join([x for x in reversed(result)])
# </editor-fold>
封装函数后,可以供给项目使用,避免项目代码直接对三方函数产生依赖。这样,日后如果三方函数发生重大变革,只需要维护自己封装的函数,而大批量的项目代码无需改动,极大了降低了使用难度和维护成本。
原文地址:https://blog.csdn.net/qq_39465480/article/details/140542323
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!