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: ...
-
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
后端选择
默认由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.0rc2.tar.gz
(162.7 kB
view hashes)
Built Distributions
Close
Hashes for pybase16384-0.3.0rc2-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11eb8f13edbbf38dfd431ad0cf5c9c83adbc7dd78ef304724016b3ce40ea7e7c |
|
MD5 | 4a37409d527fecc4dcaeeee1c9bfd9c0 |
|
BLAKE2b-256 | 4ad3d6214fe09a982d8691721780c9c12d87aec3d09ea31edfea7c63bff60672 |
Close
Hashes for pybase16384-0.3.0rc2-pp38-pypy38_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ae2f4d7dd752d5f820e94ada87aaae46162b011b31dfef3202f425f1ac47b06 |
|
MD5 | bbd943776352b1cc6cfe6a2f23ca9c20 |
|
BLAKE2b-256 | 333e3998795f609587754f370acc727516711e6b2ed5138c3c10bcac0dd3b335 |
Close
Hashes for pybase16384-0.3.0rc2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d973bdb5331b319af9f6e3d193a8057d515fc4a40c2b00191d6211ed165264c7 |
|
MD5 | 30a38479673b788ea63be38a3b065e93 |
|
BLAKE2b-256 | cee6862542e71c7e2d1ab53732e7549f73b45d7196df44a2d071b7f3ceeae78b |
Close
Hashes for pybase16384-0.3.0rc2-pp37-pypy37_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 238c3c5725874af3863c7fd300e12eda6f4a75dfa7f60d779e84f858739b4ff3 |
|
MD5 | 24a25558fe8e37ec7a28a96a1f947a4c |
|
BLAKE2b-256 | 6db3301a30fd26b2a047b394f8a207a948a263deb43096c19e0e9e9224887cd3 |
Close
Hashes for pybase16384-0.3.0rc2-pp37-pypy37_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8296db35666da4b568530d154de52576e08d81ee3341ef8263abcbbef1babf0 |
|
MD5 | 56778372397756910aea7de8e68c581b |
|
BLAKE2b-256 | 46b13c8acbd096984a4df5e3b0caa58a0ed8ea8529874b557b8c332a51ba7fa3 |
Close
Hashes for pybase16384-0.3.0rc2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79e34dd0a11ea64c4f82e05549dcc5eecd47cd8ecbad260793949844327756bb |
|
MD5 | 5c5a10ff55fc5b302acc3605d7ccf0f1 |
|
BLAKE2b-256 | e405a1a220bff358aadc3fd238510c4d053bbc6851ccc8bf3082f282cf3f718b |
Close
Hashes for pybase16384-0.3.0rc2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4cfe3c8c4fc70c2931c5596e2ea02d68207f358619a5612691ddcff139be3bf |
|
MD5 | 65f10cd852b657f0317a2df5c4c51ca6 |
|
BLAKE2b-256 | c3ea525a25f54f4d3c23e4e2abb9815ca8a62864ecd8cefb508bfe81d79e4d66 |
Close
Hashes for pybase16384-0.3.0rc2-cp310-cp310-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebcd8bc46d74a6695ffae74b35933d90a64f28eee34c5bd7fb109fae233e5450 |
|
MD5 | 6fb81a8542beea19a26a3eed354bffa3 |
|
BLAKE2b-256 | b102e64d2b8ba2def21ebd72a0aafb16695a45a9280cb06a7a275f74c74a9f88 |
Close
Hashes for pybase16384-0.3.0rc2-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81f4048d4da6efe2493828982479693b295fc3393b36ad4857ae157c3d94453b |
|
MD5 | ff18b30fba7d5486c8f9f99b8444aa78 |
|
BLAKE2b-256 | 16067a9f1105c1786b6e2f96303576afd0fc51b7ec6cde40546a09ae93de2400 |
Close
Hashes for pybase16384-0.3.0rc2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2379b360d65b59ee5d0e2e51a82aad275d7f1aa0ce60ee344772df5a42aef26e |
|
MD5 | d58d0e62f019c9e95a3e3c926187e22e |
|
BLAKE2b-256 | 341304c590f055f706837ac98e02d98f5ddf9d1e5cae2100c6ca62334e5e5340 |
Close
Hashes for pybase16384-0.3.0rc2-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9845dcb96c50cee38c40259ca0582e201fc8ba67c7087918e89b1b26a71d2f9 |
|
MD5 | 869a7ac8cac0adccb089090494ad1078 |
|
BLAKE2b-256 | 75968b3a41419b0ed972753df4afb7724ee1ec0bd1b8a0957aa13cf3d1b496a0 |
Close
Hashes for pybase16384-0.3.0rc2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e697e013f472c86abff9b58f1eb665a9bcb1af939680a74f7773dcf6d46fb3c |
|
MD5 | b16f8350e980f9b09d1ad394bacbbccb |
|
BLAKE2b-256 | 9fcfbd9f900282fcbcb9d5df12ded2cc736f284e2f8cefc32599fbf1c6190b95 |
Close
Hashes for pybase16384-0.3.0rc2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f250b53b4c0eb5ed88958923daf115521b3a66794f5d1089021650818c9f6261 |
|
MD5 | a280495056dc0ba64df6d19ecbc0c251 |
|
BLAKE2b-256 | 320ea662c9482499c32973fabaa2e4975ea706146a077af518657473131e36ec |
Close
Hashes for pybase16384-0.3.0rc2-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48a0426d49442e54a4bc178b9ce520af5f7fe60ec4b5ddff706bbcb752bcfb0d |
|
MD5 | 7c29ffa3b35378f3131f4903b0fa53bb |
|
BLAKE2b-256 | cd584a80a32421584e4855ce7bb9d5324ce246edb54ddbc3b630693531b936f7 |
Close
Hashes for pybase16384-0.3.0rc2-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a1b40c86129eed2ca8fc95c0101fcae3343376632888d955f5406ff47b7f911 |
|
MD5 | b3cd364beebbc29b28b0431634ccdfc9 |
|
BLAKE2b-256 | 3aee6caf6657466a4e64b5391462b51e1636ba1581d88d39973f79ddb45fc8bc |
Close
Hashes for pybase16384-0.3.0rc2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94e45e9cae94507c4c816a0be03464a67549bf73f3e378e65abe933a519f0880 |
|
MD5 | fbd77f70a951c36c69c46bb8c597e33a |
|
BLAKE2b-256 | 52d654215df3cb6030f1747b63b78d1cf683dd225bb34726546938887d5195c9 |
Close
Hashes for pybase16384-0.3.0rc2-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7dc4fe5ea35b978767ae497777056bcd26be5aebc86d3b0b3256313f9b0891a5 |
|
MD5 | 5acee6d38642ae269f5f2cbb57d522c7 |
|
BLAKE2b-256 | 16da707d409d09aecdc51c43cc2d0260fb0979f66e011267faa49867df152231 |
Close
Hashes for pybase16384-0.3.0rc2-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d17ccc33e30aa7a4fde573a1348111fa1c8a63ccf343829f39b2f3d171e1b41 |
|
MD5 | 73e0f1ea1fa4ecabcc5f164d28411758 |
|
BLAKE2b-256 | 896f97f7cac7f6c7e4ac83659323f670203fd38efae76a4b697b6edf1ca29c6c |
Close
Hashes for pybase16384-0.3.0rc2-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | affe0697c94504d38e1e98404f5fdc8f8f9f054b07a7d7957dd8a177d8aed970 |
|
MD5 | 28d7579fbfa3345191abe9006f7ef7ad |
|
BLAKE2b-256 | 384f037d630e578e462f138138019a05addec3be26bce7ff63a4ad887af9ecaa |
Close
Hashes for pybase16384-0.3.0rc2-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f906e0ddf2c3e738af43c77e93430b49ed86641691220d603f35e7f3e4d8b5e |
|
MD5 | 32755243590126e9e45b9dc88fdc5f71 |
|
BLAKE2b-256 | acdd15446731e3f1f2f9a06e2f0e6cc1132df492238015cc5616b73ac008b868 |
Close
Hashes for pybase16384-0.3.0rc2-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34fd29299280e3337014d2b88e9df87286f4b64f345590c5d97591253bae9ad8 |
|
MD5 | bbb64391f1734bf55c29516168a3cdf6 |
|
BLAKE2b-256 | 6acf00ba4548beae55a938365a944e5b99350a8c7bc07300ed587d77db047fc4 |