fast base16384 encode and decode
Project description
✨ pybase16384 ✨
The python binding for base16384
一种神奇的编码
使用
- 编码/解码文本
>>> import pybase16384 as pybs
>>> pybs.encode_string('hello!!')
'栙擆羼漡'
>>> pybs.decode_string('栙擆羼漡')
'hello!!'
- 编码文件
from io import BytesIO
import pybase16384 as pybs
with open("input.pcm", "rb") as f:
data = f.read()
for i in range(1):
pybs.encode_file(BytesIO(data), open("output2.pcm", 'wb'), True)
- 解码文件
from io import BytesIO
import pybase16384 as pybs
with open("output2.pcm", "rb") as f:
data = f.read()
for i in range(1):
pybs.decode_file(BytesIO(data), open("input2.pcm", 'wb'))
公开函数
def encode_len(dlen: int) -> int: ...
def decode_len(dlen: int, offset: int) -> int: ...
def encode(data: bytes) -> bytes: ...
def decode(data: bytes) -> bytes: ...
def decode_file(input: BinaryIO, output: BinaryIO, buf_rate: int = 10) -> None: ...
def encode_file(input: BinaryIO, output: BinaryIO, boolwrite_head: bool = False, buf_rate: int = 10) -> None: ...
def encode_from_string(data: str, write_head: bool = False) -> bytes: ...
def encode_to_string(data: bytes) -> str: ...
def encode_string(data: str) -> str: ...
def decode_from_bytes(data: bytes) -> str: ...
def decode_from_string(data: str) -> bytes: ...
def decode_string(data: str) -> str: ...
def encode_local_file(inp: Union[str, bytes, Path], out: Union[str, bytes, Path], encsize: int, decsize: int) -> None: ...
def decode_local_file(inp: Union[str, bytes, Path], out: Union[str, bytes, Path], encsize: int, decsize: int) -> None: ...
def encode_fd(inp: int, out: int) -> None: ...
def decode_fd(inp: int, out: int) -> None: ...
-
write_head将显式指明编码出的文本格式(utf16be),以便文本编辑器(如记事本)能够正确渲染,一般在写入文件时使用。
-
buf_rate指定读取文件的策略。当它为n时,则表示一次读取7n或者8n个字节。如果读到的字节长度小于预期,则说明长度不够, 此时,n将减半,恢复文件指针,重新读取。如果当n=1时长度仍然不够,就地encode/decode处理之。
-
encode_len
和decode_len
用于计算输出的长度
内部函数
- 他们直接来自底层的C库,高性能,但是一般不需要在外部使用(除非是增加性能)
def _encode(data: BufferProtocol) -> bytes: ...
def _decode(data: BufferProtocol) -> bytes: ...
def _encode_into(data: BufferProtocol, dest: BufferProtocol) -> int: ...
def _decode_into(data: BufferProtocol, dest: BufferProtocol) -> int: ...
def is_64bits() -> bool: ...
_decode
在解码b'='
开头的数据时不安全:解释器异常_encode_into
和_decode_into
直接操作缓冲区对象的底层指针,0拷贝,当然也和上面一样的问题,他们是没有检查的
✨ v0.3更新 ✨
融合了 CFFI 版本的成果,现在一个包可以同时在cpython和pypy上运行
本机编译
python -m pip install setuptools wheel cython cffi
git clone https://github.com/synodriver/pybase16384
cd pybase16384
git submodule update --init --recursive
python setup.py bdist_wheel --use-cython --use-cffi
- 为了在windows上编译,需要加点料,把 这个 放进msvc的目录
后端选择
默认由py实现决定,在cpython上自动选择cython后端,在pypy上自动选择cffi后端,使用B14_USE_CFFI
环境变量可以强制选择cffi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pybase16384-0.3.3.tar.gz
(174.0 kB
view hashes)
Built Distributions
Close
Hashes for pybase16384-0.3.3-pp310-pypy310_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eed5177a7066b55693447c7d98903d3baccde6f0d9afd8b48660d8706378887f |
|
MD5 | a18aee78239b5d5b3130cde1e8801b0c |
|
BLAKE2b-256 | 11059b5dd33fdef4d8c0b949abda242e9e1f8c841ed4d29654ab030f68b325a4 |
Close
Hashes for pybase16384-0.3.3-pp310-pypy310_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 216def014441b5f3e52d65cc057b587e23c923197819cbe35d2a824b809d589c |
|
MD5 | fbcb1dc18ae73f68b5538cea09e14bf0 |
|
BLAKE2b-256 | f1d8c827d0b11050b4cfc751fecb46047d9814f829fc7cfeb1b03f53643e3902 |
Close
Hashes for pybase16384-0.3.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b47e33d5a214d97d185d900b79bcf1ab1a47ef18e69c837efdc7d9538ef8c2dc |
|
MD5 | f07879a2691d7b3493c2d1463b08cecb |
|
BLAKE2b-256 | 0a9e64c135d1fb0d9e6464a36cdfd05e698973c87aeaad1743f089f63de062a5 |
Close
Hashes for pybase16384-0.3.3-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3dcd03c92ba5888e5b505960d803bc12e370c989f3ad9d7ffa342abb0e923000 |
|
MD5 | 9da887fe636dd8b096a42c7f54343879 |
|
BLAKE2b-256 | 7682c420036f46122e495ed624fdc22f7f0c500537e402a82eb8982eab72c438 |
Close
Hashes for pybase16384-0.3.3-pp39-pypy39_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 171de70bf2750b8f7541ec11dfd7bc8dff63f99db0c5fc8061a236dcc70d68ac |
|
MD5 | f8a0f69f67e49d5c9dcbe059511f3493 |
|
BLAKE2b-256 | ee5f87799c0f691756039764686c7858f3552a4542de138ca69c33996fa82b8d |
Close
Hashes for pybase16384-0.3.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 457e4d9182d02dac30cd1903c94df8cc5823ed21461fb1eda8501a355550dc7b |
|
MD5 | 891bfc1c7adf2460972fbd07e5aedd92 |
|
BLAKE2b-256 | 9221965b80e7ebca478682a95b44db178170cd19498dc70cc089222644356b70 |
Close
Hashes for pybase16384-0.3.3-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 527e1d5dbb61b78a535dfc300ffb9eb83446f5798425fd9914dcd43c8b106a4b |
|
MD5 | c0e654fe6b708cbe20749a0c6e5aef3c |
|
BLAKE2b-256 | 4104637c5a7502b537010f2757e87eac394f5c1ef2379fab97ed87a27f4ba392 |
Close
Hashes for pybase16384-0.3.3-pp38-pypy38_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 22b8e10d96bd8807ef5a937ac6a71b35e511018f34106bef802f71c5b06dc580 |
|
MD5 | 5348437b3f4b2c2c49bd129ac24c6ca3 |
|
BLAKE2b-256 | 511b69f21002a6ec383d272f684abdac3e93a8aa98369ff457acf39c41baa4b8 |
Close
Hashes for pybase16384-0.3.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0613377225ae3f776715f74ef0eeba59be4bcdb03a453a288341465e5dab350 |
|
MD5 | c871bbb5cfed9d549da52951b0df995e |
|
BLAKE2b-256 | 5e61bb646c581a6c661444df0effc474dd4288423a60003f21ecf7aedfa511ad |
Close
Hashes for pybase16384-0.3.3-pp37-pypy37_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19df91a627637752a827d7b221ec8132ccba784da2d0cac168760bfc0cf8fa67 |
|
MD5 | ea6739f77b7bfa2fba3123e0e113bf9d |
|
BLAKE2b-256 | 89f93fe0a57c70a436e321ffd9e1e2c78361cf8110ad2897b4dba0484e774403 |
Close
Hashes for pybase16384-0.3.3-pp37-pypy37_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4320ecdf9a07f74f2dfd43c20ff08e6fdd6d2898d1ddc0c5c44b324cf8cbb5d1 |
|
MD5 | 711f253cf7c3750830ddd27fd12410ee |
|
BLAKE2b-256 | 5b2fa5d2cfa0bbb19bfc09b50a01cfaff3f258e091b88253680c41c2990bc64c |
Close
Hashes for pybase16384-0.3.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8261af614e0524f44c23fe1ef188bc65cdf4080a94aea2638255a8032f51985c |
|
MD5 | 3d763edbde3b02e7661107367f5ab609 |
|
BLAKE2b-256 | 4431fd56b5a4b4e1b3a1644904bd3fc541145f9c8bf5bec55381f54a24f4c8d1 |
Close
Hashes for pybase16384-0.3.3-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f87fe2678d2e33bfc2e2d4aa1f3923ae896b740aa05408d14de8390c953a092 |
|
MD5 | 6cb8487fe5ec1dfef2f897cd66f0b069 |
|
BLAKE2b-256 | 0be4eb5830e70da4b3d2994cfc7914c039dfd5f9795374301e19868c0589f65d |
Close
Hashes for pybase16384-0.3.3-cp312-cp312-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0ce9aaa35f94d9a66936eaec69ce9530a775868521e7d4551c58166e7c3e93a |
|
MD5 | 14ebdfbec0d4d3e3cc242be73fe8c216 |
|
BLAKE2b-256 | 1cec5855f05b23a1721db7e3296abb57499092b17a83dbf635e20c706952a66f |
Close
Hashes for pybase16384-0.3.3-cp312-cp312-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31d387228e0c75be310bda1b5a4436a17bbd15947a47edab459226a9eb08be29 |
|
MD5 | 5b6408b378539ecc134a0ce0cfd604e4 |
|
BLAKE2b-256 | 72d70dd349c0edfa08ff8ab21bfe4d60a3cbf9e1b1b7ffb51c7ab386f813afc6 |
Close
Hashes for pybase16384-0.3.3-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7393f16bbeece8eb6988efa04af0b881b09bc7a3f60243b85e6f9be0f7bfa579 |
|
MD5 | 39e70f9f4446d3c0a3dea29c728433c8 |
|
BLAKE2b-256 | 6f76ce6a8c79f0ac0ed1687dc4a3482486d541793ee755ed8dfc015f0efeb8cc |
Close
Hashes for pybase16384-0.3.3-cp311-cp311-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2724a40d10e52cded2478535056ce5a57332d865f4e1f89806c1c4832cbcdb87 |
|
MD5 | 57473ea86e71ade6c3adb2770ae9f441 |
|
BLAKE2b-256 | c2b7de76899e40df2fe6de5f48692ac4fc2869b152bc4e20f89a204206636925 |
Close
Hashes for pybase16384-0.3.3-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eafccdc9e7b03d0663d6337cd6febcbec6f8ba281db627ba177a0b0c71b16fa4 |
|
MD5 | 9a3a41f0557ddfa940e20272ca181959 |
|
BLAKE2b-256 | 528f303a5b5ba5fcf1f68277df70b1cd4eafad34cad21bd7465daf0dbe927075 |
Close
Hashes for pybase16384-0.3.3-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 151a82c8926d4abb04b456bc0964c85a18d86e74afac26768369f175c191ab8f |
|
MD5 | 916114a5470936320e423f638b768339 |
|
BLAKE2b-256 | 8d5ade20a1bbde4f85fd2b0158004b2e560099faf6db10a6518a468b3a1c6653 |
Close
Hashes for pybase16384-0.3.3-cp310-cp310-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7eb3efcd9b913db5453a7afc2847bf4e9f384906e86771279e884a58c4f40e7 |
|
MD5 | 6f4114370258e427a6202d9ed6175cb9 |
|
BLAKE2b-256 | 6ae347f245ba44de5cd27208d97701ba20621b5ca23acabfa09016e919eb13e7 |
Close
Hashes for pybase16384-0.3.3-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6a456a5bbe5257609d2631da511cfd8b91bcaf1c81baa0e9a225bf9576c4cf9 |
|
MD5 | 257a28bd9e0656fb0f5d094405211cc1 |
|
BLAKE2b-256 | 01bb34fea2e8ab9ac042a556ddd9d73cc8083e4ed0d3ce0b3340c599f1cefbeb |
Close
Hashes for pybase16384-0.3.3-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef893d90bbd35e253a983403601f34a6f1a09e249578ab347935a2631751c2b9 |
|
MD5 | f5f04872e20f90c8462fbed2c63fc01d |
|
BLAKE2b-256 | e28fe60c8c0d25880c3eb7bdc1139baf185f063f1392155288898128562e797f |
Close
Hashes for pybase16384-0.3.3-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bcad65a8eea434e542a3a06afcb1848ece9a32f19da3e0d7eb0e94253eaae952 |
|
MD5 | aa2f473caf3dcffbc864bcb6837fe217 |
|
BLAKE2b-256 | f45e8c366da22b8fa4aa82740558200397c10f46878f9e56f3b15e4d33973fd9 |
Close
Hashes for pybase16384-0.3.3-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 943bfa087c3fb04a19d0d79337eb0e9e95e0afe52db80d8dcbf9390757db282b |
|
MD5 | 4437168fba3d9e8617d6700fe7b6701b |
|
BLAKE2b-256 | 1dfd77f95c4d954c4483269a4f6034f51630d1b300514370fe75780409ed5a93 |
Close
Hashes for pybase16384-0.3.3-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7272d6ce0fa33ffb33394556515fabaac89d4921d9a1491b8f3b0e0306480187 |
|
MD5 | 54d58ce4e907254303cb7afb97482174 |
|
BLAKE2b-256 | 6f0c8a7072322594c03a944cbeef6906c8e8facb92ab70df3a7305b6bee87cd1 |
Close
Hashes for pybase16384-0.3.3-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb211358bcb10d85f3cb6691f66e825cf154b3bac9e19265af6ead75c6e2d46b |
|
MD5 | bd81b47c68c534b88235fbaef5002b14 |
|
BLAKE2b-256 | e46f7db173508bd3dac624f1b066be47690dfa3c770a0e8c81f31db10ebbbc98 |
Close
Hashes for pybase16384-0.3.3-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 606d857302d1b1e463d970d2306b95e9b5c5ae327bf56a8fc5244bac0a9eed94 |
|
MD5 | 3087777c1f4330023383e036fb919bc4 |
|
BLAKE2b-256 | 0ce92bfeaada0237c93579eceb2eb8f6d33a1ed249accae37b7a63ebd9bfab5c |
Close
Hashes for pybase16384-0.3.3-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21e9eea78893cb5dacf33bb83d95e4965e3e91dbe98e7341984cbf81205ea0e9 |
|
MD5 | ceec03763373b38843d3cc977a8c7c09 |
|
BLAKE2b-256 | b63b4f9c9240884064c70632a35849729f0b41424e41ac68ea9c2195b1a7dd48 |
Close
Hashes for pybase16384-0.3.3-cp38-cp38-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2d65df4d932aba6c8e298fc9194f060e27a3e82ddaf161b8a5b2b5ebe7d6de0 |
|
MD5 | f92eea58c3c36ab09fc7fd4262950590 |
|
BLAKE2b-256 | d73bc4471bad0a84fcf253e5298bd5115fcb4a10c5c04b7ee5f95263b89232b4 |
Close
Hashes for pybase16384-0.3.3-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d0e408f3aebbcc50e3452eef93f2148580c38ad37f211fe6f6a5c5f9ee8a0fa |
|
MD5 | 370122992e2b3ff17e92be57d05c7b0c |
|
BLAKE2b-256 | 6d217f9eff379de3b910e4ca339aea4c0ee7051acd3096b0b334ad75769fa15b |
Close
Hashes for pybase16384-0.3.3-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36028d5e05d15c36cf060afb587be0478e413186799c80f4354452d9da860b24 |
|
MD5 | 82a6d1688c298bedb6003fadd558e525 |
|
BLAKE2b-256 | 0d602f16c49f63496b6f1e1cc48dfc0d44ead38627c0fac52c79e281f98bd336 |
Close
Hashes for pybase16384-0.3.3-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2905e23498d0fff5e1cbfcaa63f34b447f7e92968a3f5c772fe14acd4f5a3245 |
|
MD5 | 1408a7934ae88530f20354439a3beebf |
|
BLAKE2b-256 | 545b541e629f2db7f145582fc8190105ddccc19bb964f6bbf369884f9aada966 |
Close
Hashes for pybase16384-0.3.3-cp37-cp37m-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9db1e0944c94b5047b9316e0206d82f288be7d2413f78debf11c31d113ea44e |
|
MD5 | 605ebb350697d0d274d7a6b7a2e7b643 |
|
BLAKE2b-256 | 0343d110fe5b4f89cf9ea632fe972349ce96b3bc35c6eb9f140502efe874aa02 |
Close
Hashes for pybase16384-0.3.3-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d69580c0658467a8d47ace789715478ca95dc4e2621fb2a23aa24eeabe37051 |
|
MD5 | ee35ac3dbd9345056071f5f2cfa05047 |
|
BLAKE2b-256 | ced320043eaf21e492645a3784e71094c330734db5bfa6c9ff3604ed414d7182 |