← index #15513Issue #377
Off-topic · high · value 0.385
QUERY · ISSUE

Base64 encoding into buffer, to reduce allocations

openby jonnoropened 2024-07-20updated 2024-07-27
enhancement

Description

base64 encoding is supported by binasci.b2a_base64. This implements the standard API in CPython. It always allocates a new buffer, and returns it. The allocations could be reduced/eliminated if a b2a_base64_into type API would (also) be available. This function would take an additional parameter: the buffer (bytearray) that is to be filled with encoded data. The caller must make sure it is sufficiently large (4/3 the size of the input + up to 4 bytes of padding).
This is similar to how there is struct.unpack_into, et.c.

Code Size

Existing code could be moved into the b2a_base64_into implementation. And then have b2a_base64 be a compatibility wrapper, which creates the needed buffer internally. This should make the code increase minimal.

Implementation

I hope the MicroPython maintainers or community will implement this feature

Code of Conduct

Yes, I agree

CANDIDATE · ISSUE

ubinascii.b2a_base64() result not compatible with python 3 standard library base64.b64encode()

closedby water5opened 2020-03-23updated 2020-10-10

ubinascii.b2a_base64() attach a line feed character '\n' at end of result,
python 3 base64.b64encode() not have the character.

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied