1

我试图从一个变量中指定一个标准的二进制格式长度,但由于某种原因它永远不会起作用。我是在做格式错误还是变量包含?

comp.write("{0:%ib}".format(I) % num_bits)

ValueError:无效的转换规范

4

2 回答 2

3

首先,它的顺序错误:

("{0:%ib}" % num_bits).format(I)

其次,这不是这样做的方法!混合格式化运算符的类型意味着您不知道它可以一起完成。你要:

"{:{}b}".format(I, num_bits)

如果你真的想分两步做:

"{{:{}b}}".format(num_bits).format(I)

{{and}}被转义,因此在第一个 . 之后被转换为单大括号.format

于 2013-09-24T10:24:49.900 回答
2

您正在以错误的方式进行插值。在将%i其传递给format. 这会起作用:

comp.write(("{0:%ib}" % num_bits).format(I))

但非常可怕,你可能想把它分成两部分:

fmt = "{0:%ib}" % num_bits
comp.write(fmt.format(I))
于 2013-09-24T10:22:42.313 回答