[Python-Dev] str with base

Bob Ippolito bob at redivi.com
Wed Jan 18 03:11:36 CET 2006


On Jan 17, 2006, at 5:01 PM, Jack Diederich wrote:

> On Tue, Jan 17, 2006 at 04:02:43PM -0800, Guido van Rossum wrote:
>> On 1/17/06, Adam Olsen <rhamph at gmail.com> wrote:
>>>> In-favour-of-%2b-ly y'rs,
>>>
>>> My only opposition to this is that the byte type may want to use it.
>>> I'd rather wait until byte is fully defined, implemented, and  
>>> released
>>> in a python version before that option is taken away.
>>
>> Has this been proposed? What would %b print?
>>
> It was proposed in this or another thread about the same in the  
> last few
> days (gmane search doesn't like the % in '%b').
>
> The suggestion is to add 'b' as a sprintf-like format string
>   %[<base>][.<pad>]b
>
> Where the optional <base> is the base to print in and <pad> is the  
> optional
> minimum length of chars to print (as I recall).  Default is base 2.
>
> Me?  I like it.

Personally I would prefer the "b" format code to behave similarly to  
"o", "d", and "d", except for binary instead of octal, decimal, and  
hexadecimal.  Something that needs to account for three factors (zero  
pad, space pad, base) should probably be a function (maybe a  
builtin).  Hell, maybe it could take a fourth argument to specify how  
a negative number should be printed (e.g. a number of bits to use for  
the 2's complement).

However... if %b were to represent arbitrary bases, I think that's  
backwards.  It should be %[<pad>][.<base>]b, which would do this:

	>>> '%08b %08o %08d %08x' % 12
	'00001100 00000014 00000012 0000000C'

Where your suggestion would have this behavior (or something close to  
it):

	>>> '%08b %08o %08d %08x' % 12
	'14 00000014 00000012 0000000C'

-bob



More information about the Python-Dev mailing list