
从未停步为您分享以下优质知识
Python中将数据转换为二进制的方法可分为以下三类,涵盖整数、字符及复杂对象:
一、整数转换为二进制
使用内置函数 `bin()`
直接将整数转换为二进制字符串,返回值以 `0b` 开头。例如:
```python
num = 10
binary_str = bin(num) 输出: '0b1010'
binary_num = binary_str[2:] 去掉前缀后输出: '1010'
```
若需固定位数,可使用 `zfill()` 补齐,例如 `zfill(8)` 将 `10` 转换为 `00001010`。
手动实现算法
通过不断取余和整除操作,将十进制数转换为二进制字符串。例如:
```python
def decimal_to_binary(n):
if n == 0:
return '0'
binary_num = ''
while n >
0:
binary_num = str(n % 2) + binary_num
n = n // 2
return binary_num
```
二、字符转换为二进制
通过ASCII码转换
先使用 `ord()` 获取字符的ASCII码(整数),再转换为二进制。例如:
```python
char = 'A'
ascii_value = ord(char)
binary_value = bin(ascii_value)[2:] 输出: '1000001'
```
若需固定位数,可用 `zfill(8)` 补齐,例如 `zfill(8)` 将 `65` 转换为 `01000001`。
三、复杂对象序列化
使用 `pickle` 模块将Python对象(如字典、自定义类实例)转换为二进制数据流。例如:
```python
import pickle
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 30)
binary_data = pickle.dumps(person) 输出序列化后的二进制数据
```
四、二进制数据操作
使用 `bytes` 对象
适用于存储和操作二进制数据,如文件读写。例如:
```python
data = b'Hello, binary world!'
with open('test.bin', 'wb') as f:
f.write(data) 写入二进制数据
with open('test.bin', 'rb') as f:
loaded_data = f.read() 读取二进制数据
```
使用 `struct` 模块
用于打包和解包二进制数据,支持多种数据类型组合。例如:
```python
import struct
packed_data = struct.pack('if f s', 123, 45.6, b'hello') 打包整数、浮点数和字符串
```
以上方法可根据具体需求选择,内置函数和 `pickle` 模块适用于快速转换,而 `struct` 和 `bytes` 更适合处理二进制数据流。