您可以将 1 和 0 的 str 转换为 int 类型变量,如下所示:
>>> int('10110001',2)
177
您可以像这样将ints 转换回 1 和 0 的 strs:
>>> format(177,'b')
'10110001'
另外,请注意,您可以使用前导 0b 以二进制形式编写 int 文字,如下所示:
>>> foo = 0b10110001
>>> foo
177
现在,在你说“不,我要求的是位,而不是整数!”之前这点考虑一下吧。 int 变量不会作为数字的 base-10 表示形式存储在计算机硬件中;它直接存储为位。
编辑:Stefan Pochmann 指出这将去掉前导零。考虑:
>>> code = '000010110001'
>>> bitcode = int(code, 2)
>>> format(bitcode, 'b')
'10110001'
那么如何保留前导零呢?有几种方法。你如何处理它可能取决于你是想先将每个字符类型转换为int,然后将它们连接起来,还是在将整个字符类型转换为int之前连接1和0的字符串。后者可能会简单得多。一种适用于后者的方法是存储代码的长度,然后将其与以下语法一起使用:
>>> format(bitcode, '012b')
'000010110001'
'012b' 告诉格式化函数用足够的零填充字符串的左侧,以确保最小长度为 12。所以你可以这样使用它:
>>> code = '000010110001'
>>> code_length = len(code)
>>> bitcode = int(code, 2)
>>> format(bitcode, '0{}b'.format(code_length))
'000010110001'
最后,如果您对{} 和第二个format 不熟悉,请继续阅读string formatting。