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

值将数字转换为8位格式时出错

  •  1
  • user9519224  · 技术社区  · 7 年前

    我想打印二进制数0x00到0xFF,格式为8位。

    这个 bin() Python函数不会返回完整的8位,因此我需要使用 format 函数来格式化二进制字符串。

    下面的代码给了我一个 ValueError ,但我将一个二进制字符串传递给format函数 08b 那么为什么它会出错呢?

    a = bin(10);
    a_bin = "{0:08b}".format(a);
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   MSeifert    7 年前

    bin 将返回一个字符串,您不能将字符串的格式设置为数字。这就是为什么异常消息说它的格式未知 字符串 :

    >>> "{0:08b}".format(bin(10))
    ValueError: Unknown format code 'b' for object of type 'str'
    

    您必须使用整数作为格式的输入:

    >>> "{0:08b}".format(10)
    '00001010'
    
        2
  •  1
  •   user9455968 user9455968    7 年前

    使用数字,而不是字符串:

    >>> "{0:08b}".format(10)
    '00001010'
    

    要全部打印:

    >>> for i in range(0, 256):
    ...     print("{0:08b}".format(i))
    ...
    00000000
    00000001
    00000010
    00000011
    00000100
    ...
    11111011
    11111100
    11111101
    11111110
    11111111