base92解码(python3实现base92加解码)

base92解码(python3实现base92加解码)

起因

之前由于更新python3,导致了base92原作者的模块无法兼容python3,网上找了好多解决方法,均为找到python3相关的base92模块,看到原作者写的python2的base92模块最新的已经使7年前了,并且未找到兼容python3的,于是突发奇想,改造了下原python2的代码,新打包成了python3版本的base92包,仅供学习交流用。

项目地址

下载地址

维护

由于该修改未打算作为项目目的,仅用作学习交流和小程序使用,所以没有发布到PyPi,大家如果有西纳想用的小伙伴需要自行去Github下载,然后离线安装,无法用pip install
并且在未影响到常规用的情况下不打算做更多完善,需要用于发行项目的小伙伴可以去支持原作者

已更新支持bytes类型
可通过 pip install py3-base92 进行安装

安装方法:

1. 下载完毕后找到 py3base92_setup 文件夹打开
2. windows下直接双击 install.bat 即可安装,或者进入到该目录然后运行 python setup.py install 即可
3. linux下安装直接进入到setup.py存在的目录然后执行python setup.py install 即可
4. 安装完毕后用 import py3base92 语句导入模块测试,若无报错即安装成功

执行 pip install py3-base92 安装
import py3base92 导入测试,无报错即安装成功

使用方法

函数:
b92encode() / encode() / base92_encode() 等价
b92decode() / decode() / base92_decode() 等价

样例代码:

import py3base92
temp_str = "helloworld"
encoded_str = py3base92.b92encode(temp_str.encode())
print(encoded_str)
decode_str = py3base92.b92decode(encoded_str)
print(decode_str.decode())

base92字符集

import py3base92

print(py3base92.get_character_set())

!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz{|}

测试样码通过率

alphabet 可视字符测试
样例通过率 100% (10000次随机测试)

##该样例通过率100%
import random
from py3base92 import b92encode, b92decode

sum = 0
for i in range(10000):
    randoms = random.randint(0, 92)
    strs = ''.join(random.sample(
        [' ', '!', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6',
         '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
         'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', 'a', 'b', 'c',
         'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
         'z', '{', '|', '}'], randoms))
    result = b92encode(strs.encode())
    result2 = b92decode(result).decode()
    if strs == result2:
        sum += 1
print("testNum:10000, pass:" + str(sum))

随机types校验
样例通过率 100% (10000次随机测试)

#该样例通过率100%
from py3base92 import b92encode, b92decode
import hashlib
import random


def gen_bytes(s):
    return hashlib.sha512(s.encode()).digest()[:random.randint(1, 64)]


sum = 0
for i in range(10000):
    s = gen_bytes(str(random.random()))
    encode_result = b92encode(s)
    decode_result = b92decode(encode_result)
    if s == decode_result:
        sum += 1
print("testNum:10000, pass:" + str(sum))

测试结论,尽可能避免bytes类型使用,str类型可满足使用。
测试结论,bytes支持,全样例通过率100%

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值