On 7/11/2016 3:27 PM, Ian Kelly wrote:
On Mon, Jul 11, 2016 at 12:54 PM, Terry Reedy <tjre...@udel.edu> wrote:
In any case, I think it an improvement to say that '0x00123' has a field
width of 7 rather than a 'precision' of 5.

'{:#07x}'.format(0x123)  # specifiy field width
'0x00123'
"%#0.5x" % 0x123  # specify int precision
'0x00123'

It occurs to me now that this does create a challenge if the format is
meant to support negative numbers as well:

'%#0.5x' % -0x123
'-0x00123'

This expands the field from 7 to 8 chars. In running text, this is alright. In formatted table columns, it is not.

'{:#07x}'.format(-0x123)
'-0x0123'

Multiple alternatives

>>> '{: #08x} {: #08x}'.format(0x123, -0x123)
' 0x00123 -0x00123'
>>> '{:+#08x} {:+#08x}'.format(0x123, -0x123)
'+0x00123 -0x00123'
>>> '{0:#0{1}x} {2:+#0{3}x}'.format(0x123, 7, -0x123, 8)
'0x00123 -0x00123'
>>> n1, n2, w = 0x123, -0x123, 7
>>> '{0:#0{1}x} {2:+#0{3}x}'.format(n1, w+(n1<0), n2, w+(n2<0))
'0x00123 -0x00123'

In running text, I ight go with '+','-' prefix.

--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to