Can we make PyLong_AsByteArray(PyLongObject* v, unsigned char* bytes, size_t n, int little_endian, int is_signed);
and PyObject * PyLong_FromByteArray(const unsigned char* bytes, size_t n, int little_endian, int is_signed);
available as publicly documented functions?
They're already available internally, as can be seen here (https://github.com/python/cpython/blob/578c3955e0222ec7b3146197467fbb0fcfae1...) so all that would be required (I think) would be exporting the symbols and updating the documentation (https://docs.python.org/3/c-api/long.html).
The benefits would be that we could use this when we want to use fixed width integer types without having to check the width of fundamental integer types (so we could use int32_t
rather than checking sizeof(int)
or the corresponding macro). This would also be useful if someone wanted to use compiler extension fixed width types such as __int128_t
(and the corresponding unsigned version).