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: ...
-
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.2.tar.gz
(168.8 kB
view hashes)
Built Distributions
Close
Hashes for pybase16384-0.3.2-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a03e853caec22f4acb921f71d4d86b4c352f3f55397bfbb9dee4427f76fb8b9c |
|
MD5 | 51ec808eb163ae6907287a184b22d074 |
|
BLAKE2b-256 | a01d517d11c42685f6ed16eda3da2fdd5a9c43e121578e2f067ed7fb207676b4 |
Close
Hashes for pybase16384-0.3.2-pp38-pypy38_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60c2e69184cc0fb4e6efaf479a323b1ba497d78a65350f8cf3874777ffc8d9c6 |
|
MD5 | 6afee6f67c13f08e689bf4129c8302d0 |
|
BLAKE2b-256 | 8711e55f475eca27b8759e1a42dc8bf5109a1126987df67a1e6f1253000fc18b |
Close
Hashes for pybase16384-0.3.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0174abf288e5d2be03cf14fea61dfeb218abd35f07437ac006766979b42c8c94 |
|
MD5 | ce4eae60125efaa97067a1d16ae317fa |
|
BLAKE2b-256 | ffcbcc4d1b071ecfed99fa3fa2d69cfa7a2724dc544535324443ca8e6325d601 |
Close
Hashes for pybase16384-0.3.2-pp37-pypy37_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8bfcb4cc691c11ef0633fea88ece22328b43efdf66840147245c1a98080e555e |
|
MD5 | 71724d910a2cdf8542881805b4bde828 |
|
BLAKE2b-256 | db5fc31680202208f87ec4a9e724089752104f7e6db2b2e57e2004fdb8cfe8d3 |
Close
Hashes for pybase16384-0.3.2-pp37-pypy37_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9acb535ba95d3e6b924878a2652fd0b8cc91acdc3b72f9bb1be891b0fd31572 |
|
MD5 | d4e308643fddb24b3827ba9110a425b2 |
|
BLAKE2b-256 | c28535c0cb1ca945a2344e60efb8263678973bdeaae6fd6b4e2aee314c6dc66a |
Close
Hashes for pybase16384-0.3.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7f65a08afc7ca491b71f3e7b546dda0e72c4414c25fd92a30ef3607bbb31855 |
|
MD5 | 04cb815c53e7f0a25ac44f234ba653af |
|
BLAKE2b-256 | 22f7bdd9ccde610444eb91d504c129628a137279755597718a7c839781b0b1f5 |
Close
Hashes for pybase16384-0.3.2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34a2878ef091f815e57366ab7e3665ffdfed234a89f13c64778a006945078a4b |
|
MD5 | a879c758d2678756bf78e3d4aa48085f |
|
BLAKE2b-256 | 13fb93918531f2d635e7f2632cf7a8a55ea85275c3c6def04693eb482089fb4a |
Close
Hashes for pybase16384-0.3.2-cp310-cp310-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a0d79224ee5f8a1c80e0c1141a9fd95bb9fa3e6edc9e2fdfeec5811bf0ff769 |
|
MD5 | d6cf69c97e18264092ac67eb00201fd0 |
|
BLAKE2b-256 | 7a40d5136dc5dbc6b3ebea605eeeacb070c5537f8ff3093407836499da5e813a |
Close
Hashes for pybase16384-0.3.2-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40e48f78c952ce55726ac8b6f4f9e1967c477e06aea69cd49bb41cc1aca1e99e |
|
MD5 | a843f7973152a7965d2cd6b0ddb3fbd6 |
|
BLAKE2b-256 | e652f0cc8deaf6d61629ba88ac57196b9ec535eb098de5aded8aa24d30562fb0 |
Close
Hashes for pybase16384-0.3.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc5b7a4bec935ffbf23996966fcc731dfd5f638a2912f916d35bc67a3b33bfe2 |
|
MD5 | 68bb83e48b9db2aec14cf88bb29a00dc |
|
BLAKE2b-256 | e48d8baef7bf6c463a59b2a569df7fd0d3561c148ae72686a7f8028b9247e140 |
Close
Hashes for pybase16384-0.3.2-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bb950fee551c4d403364b665613b0a4a062e171f0fceb72472249b679142f3a |
|
MD5 | f5b21fdc0cbed04e3e3ea46d2d9d9edd |
|
BLAKE2b-256 | 71b9e16ec6c5bbb378463591df161b56ccb99117b9b9cb1fe5ef575d1311b4e6 |
Close
Hashes for pybase16384-0.3.2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0bcffa6aab0089749a5be50bbeb2794b36023fb4e81edf7fa965a45976ffd2d |
|
MD5 | 40264b7263e6003251def98a7032fd27 |
|
BLAKE2b-256 | 87ab8ba88e6a6511b7d7a92404e3f492a02762e0abcced43eb33424a63da963e |
Close
Hashes for pybase16384-0.3.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 12ede750df2f6e25751ec9a2483b8f1c0c0884ef5bca8ba16b503b91254a6339 |
|
MD5 | 9cc96fccdbdc336b73ce5ae2b538142f |
|
BLAKE2b-256 | 0cdf4ecc9a0253ccb8f25705d00392abc2066059abca819ac4ff840b1ed2212e |
Close
Hashes for pybase16384-0.3.2-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 895809e7ad98291f01a6a287f3260f7588d1309018a34893d090acfab3f0bfcb |
|
MD5 | df482f044d1c4eaf3e9031dd8cd70512 |
|
BLAKE2b-256 | e2bf3ddbda6bceb94db2cc55efa0410ca9aa8a060a84b0aae38f881e0646ea26 |
Close
Hashes for pybase16384-0.3.2-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2db128972c737f8fe75edf3234d9342d32818cc1c77ae08d1358b36b36636201 |
|
MD5 | 7d2e5cc9687a2e8452334d13e135a39d |
|
BLAKE2b-256 | bd393b2db2e65e4b04b7aefce491998de036f1b6b0eed7d5702cc53e40874558 |
Close
Hashes for pybase16384-0.3.2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 648c9865171330d335451d304099edf8ccea01f80aa348eee572788890e8bfb9 |
|
MD5 | d7c1ad454c7aa2029814975324672344 |
|
BLAKE2b-256 | 736f5bef9c095b7e20b9e6ab94d1c325582f1c27d9525b3af6aded00e064c77f |
Close
Hashes for pybase16384-0.3.2-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c420d37956c19af344e8dc8c362ec12878d0a8a14e3fb9efe6391f6c4428ea34 |
|
MD5 | 1081b62301ab1e6e08812afe9876de0d |
|
BLAKE2b-256 | 1c7e996e01f9dc738021f696d66dd9f89c46eb8fc7f7ca5a52b99eeb97f4b48b |
Close
Hashes for pybase16384-0.3.2-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30fa4baf5e7bf6927844017a0a092718b7bfe40670b786c8e42ad9166bf4613a |
|
MD5 | cd90a4e1ecc97d00e51a199efe713412 |
|
BLAKE2b-256 | 497ee799302e845c423c767d7f9995a21e02179a4b855fa9b7b48789f2a00cc0 |
Close
Hashes for pybase16384-0.3.2-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71b322c5c97b79654d9a0ac706350e9af1040ad1dbd62e5e7c7662c10114244d |
|
MD5 | 9f91771d5be51ed6e49f54e79b4f39f8 |
|
BLAKE2b-256 | 5851767cf7a020b4a2d76d18c0ddf86fc51ba119516d870af7479ff2b03cba05 |
Close
Hashes for pybase16384-0.3.2-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd3fba2f39c2e285227d5bb24bf8db63e546c39c17f359fb48e61652afada7a5 |
|
MD5 | e6afdd8bd9a3294041c05bd9e800b3b4 |
|
BLAKE2b-256 | 7039d38896712202eaf9ba3279241847d3baaad0cd4bb58521a2f30f5fa8e62b |
Close
Hashes for pybase16384-0.3.2-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f54c65a1caed2f32092e2a806068be182501b15e596319c180128b29ebbbd3c |
|
MD5 | c45e166693930ade05a03ee203e6b33e |
|
BLAKE2b-256 | adfa2471fce42cab8868bca2097d57b99b32973bec42676af423c3e9ec77f56e |