将整数转换为具有可变位数的二进制

时间:2016-01-07 22:29:21

标签: python

我想从给定列表list中选择一个数字,并从n位表示中提取一些数字。

我知道如果我想要8位,我需要写

r = random.choice(list)
bin = "{0:08b}".format(r)

但我想做点什么

bin = "{0:0(self.n)b}".format(r)

其中n是类成员。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您可以使用嵌套的{…}来定义大小:

bin = "{0:0{1}b}".format(r, self.n)

使用Py2.7 +,如果你发现更清洁,你可以省略数字:

bin = "{:0{}b}".format(r, self.n)

例如:

>>> "{:0{}b}".format(9, 8)
'00001001'

答案 1 :(得分:1)

从python3.6开始,您可以使用Literal String Interpolation,将变量名添加到字符串中。

In [81]: pad,num = 8,9

In [82]: f"{num:0{pad}b}"
Out[82]: '00001001'

使用str.format,您还可以使用名称:

In [92]: pad,num = 8,9

In [93]: "{n:0{p}b}".format(n=num, p=pad)
Out[93]: '00001001'