将数字转换为8位格式时的ValueError

时间:2018-03-19 21:01:41

标签: python string integer

我想用完整的8位格式打印二进制数0x00到0xFF。

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

下面这段代码给了我一个ValueError,但我将二进制字符串传递给格式函数,并且我使用08b,所以为什么会出错?

a = bin(10);
a_bin = "{0:08b}".format(a);

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

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

>>> "{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