{{ message }}
WIP: Add signed kwarg to int.to_bytes#14275
Closed
projectgus wants to merge 2 commits into
Closed
Conversation
* No longer overflows if byte size is 0 (closes micropython#13041) * Raises OverflowError in any case where number won't fit into byte length (Now matches CPython, previously MicroPython would return a truncated bytes object.) * Document that micropython int.to_bytes() doesn't implement the optional signed kwarg, but will behave as if signed=True when the integer is negative (this is the current behaviour). Add tests for this also. Requires changes for small ints, MPZ large ints, and "long long" large ints. Adds a new set of unit tests for ints between 32 and 64 bits to increase coverage of "long long" large ints, which are otherwise untested. Tested on unix port (64 bit small ints, MPZ long ints) and Zephyr STM32WB board (32 bit small ints, long long large ints). Untested on a port whose native format is big endian (don't have one at hand). This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
Signed-off-by: Angus Gratton <angus@redyak.com.au>
d968e2a to
fd7bc4f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

After doing all the work for #13087 I figured I was 99% of the way to implementing support for the
signedkwarg, so decided to try it out. See the second commit for the changes unique to this PR.TODO
signed=True. (Mostly results are the same, but in some cases an additional byte is needed to ensure a 0 sign bit.)signed=False. This will be a breaking change compared to the current behaviour.as_signedargument.Code size
Total size of unix "minimal" variant:
(Note: CI measurements are a bit worse than my measurements, see both PRs. I assume because of gcc versions.)