On Fri, Dec 2, 2011 at 4:12 PM, T.B. <bauertomer@gmail.com> wrote:

I suggest using the precision field in the format specification for integers for that. Examples:

"{:.16d}".format(31) #Prints '1f'

"{:.2d}".format(-19) # Prints '-10011'

<snip>

I don't think this belongs in format.

P.S. Bonus question: What "{:.-909d}".format(42) would print?

Any proposal which includes an inscrutable example doesn't bode well for the usability of the feature. :-) Sure, negative bases are mathematically meaningful but are they useful in Python? And why not complex bases then? Or did you have something else strange in mind?

If there's enough need for encoding in different bases, including a standard version of format_integer_in_base makes a lot more sense. We could write format_integer_in_base(15, 16) to get "F" and format_integer_in_base(64, "A23456789TJQK") to get "4K". But note that standard base 64 encoding is not at all the same -- this function encodes starting at LSB while base 64 encodes at word boundaries.

Finally, note that if you really want to mangle format strings you can do it without changing the library. Just write it this way "{:.16d}".format(arbitrarybase(31)) where you have defined

class arbitrarybase:
    def __format__(self, format_spec):
        return format_integer_in_base(parse format spec etc.) 

--- Bruce
Follow me: http://www.twitter.com/Vroo http://www.vroospeak.com