代码之家  ›  专栏  ›  技术社区  ›  enzo

python-如何将十六进制数字格式化为大写和两位数?

  •  1
  • enzo  · 技术社区  · 8 年前

    我试着这样做:

    x = 0
    
    while(x != 10):
        print('Number '+'{0:x}'.format(int(x)))
        x = x + 1
    

     0    5    a    f   14   19
     1    6    b   10   15   1a
     2    7    c   11   16   1b
     3    8    d   12   17   1c
     4    9    e   13   18   1d
    

    我想让它看起来像这样

    00   05   0A   0F   14   19
    01   06   0B   10   15   1A
    02   07   0C   11   16   1B
    03   08   0D   12   17   1C
    04   09   0E   13   18   1D
    

    1 回复  |  直到 8 年前
        1
  •  2
  •   abarnert    8 年前

    Format specification Mini-Language

    要获取大写字母:

    要获得2位数:

    是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容确定。

    '0' 填满 有一个 对齐 类型 '=' .

    所以,你要么设置 width 到2, fill 到 0 和 alignment 到 = 或者,更简单地说,使用特殊的 0 前缀位于 宽度 .

    所以:

    print('Number '+'{0:02X}'.format(int(x)))
    

    当我们在做的时候,这是非常愚蠢的代码。

    第一, x 已经是 int ,所以为什么打电话 利息 在上面?

    print('Number '+'{0:02X}'.format(x))
    

    同时,如果你唯一要做的就是 format 字符串是单个格式说明符,不需要 str.format ,只是 格式 以下内容:

    print('Number ' + format(x, '02X'))
    

    或者,也可以是 str.格式

    print('Number {:02X}'.format(x))
    

    print(f'Number {x:02x}')