Decorating Hex function to pad zeros

前端 未结 6 1874
无人共我
无人共我 2020-11-29 01:31

I wrote this simple function:

def padded_hex(i, l):
    given_int = i
    given_len = l

    hex_result = hex(given_int)[2:] # remove \'0x\' from beginning o         


        
6条回答
  •  [愿得一人]
    2020-11-29 01:45

    Use the new .format() string method:

    >>> "{0:#0{1}x}".format(42,6)
    '0x002a'
    

    Explanation:

    {   # Format identifier
    0:  # first parameter
    #   # use "0x" prefix
    0   # fill with zeroes
    {1} # to a length of n characters (including 0x), defined by the second parameter
    x   # hexadecimal number, using lowercase letters for a-f
    }   # End of format identifier
    

    If you want the letter hex digits uppercase but the prefix with a lowercase 'x', you'll need a slight workaround:

    >>> '0x{0:0{1}X}'.format(42,4)
    '0x002A'
    

    Starting with Python 3.6, you can also do this:

    >>> value = 42
    >>> padding = 6
    >>> f"{value:#0{padding}x}"
    '0x002a'
    

提交回复
热议问题