在Python中,将二进制转换为其他进制或数据类型的方法如下:
一、二进制转十进制
使用内置函数 `int()` 最推荐的方法,直接将二进制字符串转换为十进制整数,支持自动处理前缀 `0b`。
```python
binary_str = '1010'
decimal_number = int(binary_str, 2)
print(decimal_number) 输出: 10
```
手动计算
通过位权展开法计算,适用于学习理解底层逻辑。
```python
def binary_to_decimal(binary_str):
return sum(int(bit) * (2 idx) for idx, bit in enumerate(binary_str[::-1])) ``` 二、二进制转十六进制 使用 `binascii` 模块
提供 `hexlify` 和 `unhexlify` 函数,方便二进制与十六进制转换。
```python
import binascii
binary_data = b'x1ax2b'
hex_str = binascii.hexlify(binary_data).decode('utf-8')
print(hex_str) 输出: 1a2b
```
使用内置函数 `int()`
先转十进制再转十六进制,代码更简洁。
```python
binary_str = '1010'
decimal_number = int(binary_str, 2)
hex_str = hex(decimal_number)[2:] 去掉前缀 '0x'
print(hex_str) 输出: a
```
三、二进制转其他数据类型
使用 `struct` 模块
适用于打包/解析二进制数据结构,如整数、浮点数等。
```python
import struct
data = struct.pack('if', 42, 3.14) 打包成二进制
unpacked_data = struct.unpack('if', data) 解包为整数和浮点数
print(unpacked_data) 输出: (42, 3.14)
```
使用 `bytes` 类型
直接将二进制字符串转换为 `bytes` 对象,支持后续处理。
```python
binary_str = '1010'
binary_data = bytes.fromhex(binary_str) 从十六进制字符串转换
print(binary_data) 输出: b'1010'
```
四、注意事项
异常处理: 手动转换时需验证输入合法性,避免 `ValueError`。 效率优先
以上方法覆盖了二进制转换的常见场景,可根据需求选择合适的方式。