自学内容网 自学内容网

【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)!