[Python-Dev] Access to bits for a PyLongObject (original) (raw)

Eric V. Smith eric+python-dev at trueblade.com
Wed Mar 7 14:03:29 CET 2007


Martin v. Löwis wrote:

Ah, I had missed the point that it's just binary formatting that you are concerned with (and then I missed that binary is "base 2", rather than "sequence of bits")

Apologies for not being clear. It's easy to forget that others don't share the context of something you've been immersed in.

Having written all of this, I'm now thinking that Nick's suggestion of PyLongAsByteArray might be the way to go. I would use that for all of my formatting for longs. How would you do negative numbers, then? AsByteArray gives you two's complement.

_PyLong_Sign

But I'd like PEP 3101 to be as efficient as possible, because once it's available I'll replace all of the '%' string formatting in my code with it. That is fine. However, don't trade efficiency for maintainability. Keep encapsulation of types, this is what OO is for. Modularize along with type boundaries. If that loses efficiency, come up with interfaces that still modularize in that way but are efficient. Don't "hack" to achieve performance. (Any other way I can formulate the same objective :-?)

Point taken. I currently have it using PyLong internals, just to get our tests to pass and so Pat can work on his part. As we still want to be a standalone module for a while, I'm going to modify the code to use AsByteArray and Sign to do the binary formatting only.

When/if we integrate this into 3.0 (and 2.6, I hope), I'll look at adding format to long, and possibly the other built in types. To do so we'll need to factor some code out to a library, because it doesn't make sense for all the built-in types to understand how to parse and operate on the format specifiers (the [[fill]align][sign][width][.precision][type] stuff).

Thanks for your comments!

Eric.



More information about the Python-Dev mailing list