在Python中,将二进制转换为十进制主要有以下几种方法,推荐使用内置函数`int()`,因为它简洁高效:
一、使用内置函数`int()`
这是最简单且推荐的方法,通过传递二进制字符串和基数2实现转换。
```python
binary_string = '1010'
decimal_number = int(binary_string, 2)
print(decimal_number) 输出: 10
```
解释:`int()`函数接受两个参数,第一个是待转换的字符串,第二个是基数(此处为2表示二进制)。
二、手动实现转换
通过按权展开法手动计算二进制对应的十进制值。
```python
def binary_to_decimal(binary_str):
decimal_number = 0
binary_str = binary_str[::-1] 反转字符串
for index, digit in enumerate(binary_str):
if digit not in '01':
raise ValueError("Invalid binary digit")
decimal_number += int(digit) * (2 index) return decimal_number binary_str = '1010' print(binary_to_decimal(binary_str)) 输出: 10 ``` 步骤说明
1. 反转二进制字符串(如`1010`变为`0101`);
2. 从右到左遍历每一位,计算`digit * 2^index`并累加。
三、错误处理示例
在手动转换时,需注意输入验证。
```python
def binary_to_decimal(binary_str):
if not binary_str:
raise ValueError("Empty string")
if not all(char in '01' for char in binary_str):
raise ValueError("Non-binary value")
return sum(int(digit) * (2 index) for index, digit in enumerate(binary_str[::-1]))
try:
binary_str = input("Enter binary number: ")
print(binary_to_decimal(binary_str))
except ValueError as e:
print(e)
```
四、其他方法
使用`numpy`库(适用于处理大量数据):
```python
import numpy as np
def binary_to_decimal_np(binary_array):
return np.dot(binary_array, 2 np.arange(len(binary_array))[::-1])
binary_array = np.array([1, 0, 1, 0])
print(binary_to_decimal_np(binary_array)) 输出: 10
```
适用于将二进制数组转换为十进制数。
总结
推荐使用`int()`函数,代码简洁且性能最优;
手动实现适合教学或理解转换原理;
错误处理可避免非法输入导致的异常;
`numpy`方法适合批量处理数据。