I'm working on PEP 3101, Advanced String Formatting. About the only built-in numeric formatting I have left to do is for converting a PyLongOjbect to binary.
I need to know how to access the bits in a PyLong. After reading longobject.c, I can figure it out. But I'm looking for something that might be preferable to me poking around directly in ob_size and ob_digit[]. I'm looking for something along the lines of: for (i = 0; i < _PyLong_NumBits(v); i++) { // get i-th bit of v } I don't care if it's increasing or decreasing bits, I can handle either. I realize the actual code will likely involve the 2 nested loops, but logically this is what I need. I can certainly do this myself, by looping over ob_digit and then over each bit. But there's a comment in longintrepr.h that says the internals are published only for marshal.c. Should I go ahead and include longintrepr.h and loop over ob_digit myself, or is there some other method? I really don't want to use _PyLong_AsByteArray, since I don't want to do the copy. If I'm missing some PyLongObject API, please let me know. By the way, while doing this I noticed a bug in stringobject.c and unicodeobject.c, relating to a missing check for 'G' precision. I'm not sure if it could be a buffer overflow or not, without spending some more time analyzing at it. But it seems like the potential is certainly there. The bug is at http://python.org/sf/1673757 and a patch at http://python.org/sf/1673759. (I'll save my comments on how "approachable" python-dev is after I have this question answered!) Thanks for your time. Eric. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com