擅长:python、mysql、java
<p><a href="https://docs.python.org/3/library/functions.html#int" rel="nofollow noreferrer">^{<cd1>}</a>构造函数接受可选的基。您可以将<code>base10</code>重写为</p>
<pre><code>def base10():
num = int(input("Enter a binary number:"), 2)
print(num )
</code></pre>
<p>另一种转换方式通常是用<code>bin</code>完成的。另一种方法是逐个检查数字的位。您的<code>base2</code>实现很接近,但不应该在循环中打印。你知道吗</p>
<p>比如:</p>
<pre><code>output = []
while num:
output.append(num % 2)
num //= 2
print(''.join(reversed(output)))
</code></pre>
<p>另一种方法是使用<code>int</code>的<a href="https://docs.python.org/3/library/stdtypes.html#int.bit_length" rel="nofollow noreferrer">^{<cd5>}</a>方法和一个简单但可旋转的方法来按正确的顺序创建数字:</p>
<pre><code>b = ''.join(str(int(bool(num & (1 << n)))) for n in range(num.bit_length() - 1, -1, -1))
</code></pre>
<p>monstrosity <code>str(int(bool(num & (1 << n))))</code>将2的幂的位标志转换为布尔值,然后使用布尔值的整数表示生成<code>0</code>或<code>1</code>的字符串。这相当于做<code>'1' if num & (1 << n) else '0'</code>。你知道吗</p>