在Python中,字符与二进制转换可以通过以下方法实现:
一、字符转二进制
使用内置函数 - `ord()` 函数将字符转换为对应的Unicode码点(整数):
```python
ord('A') 输出: 65
```
- `chr()` 函数将整数转换为对应的字符:
```python
chr(65) 输出: 'A'
```
- 结合 `bin()` 函数将字符转换为二进制字符串:
```python
bin(ord('A')) 输出: '0b1000001'
```
- 去除二进制字符串的前缀 `0b`:
```python
bin(ord('A'))[2:] 输出: '1000001'
```
使用 `format` 函数
- 格式化输出为固定长度的二进制字符串:
```python
format(ord('A'), '08b') 输出: '01000001'
```
使用 `bitarray` 模块
- 将字符串编码为 `bytes`,再转换为 `bitarray` 对象:
```python
from bitarray import bitarray
bit_array = bitarray(ord('A').to_bytes(1, 'utf-8'))
binary_str = bit_array.to01() 二进制字符串
print(binary_str) 输出: '1000001'
```
二、二进制转字符
使用 `int` 函数
- 将二进制字符串转换为整数(需指定基数2):
```python
int('1000001', 2) 输出: 65
```
- 使用 `chr()` 函数将整数转换为字符:
```python
chr(65) 输出: 'A'
```
使用 `binascii` 模块
- 将二进制数据转换为十六进制字符串,再转换为字符:
```python
import binascii
binary_data = b'x01x02'
hex_string = binascii.hexlify(binary_data).decode('utf-8') 输出: '0102'
char = chr(int(hex_string, 16)) 输出: 'AB'
```
- 将十六进制字符串直接转换为字符:
```python
char = chr(0x4142) 输出: 'AB'
```
三、注意事项
编码问题: Python 3默认使用UTF-8编码,处理非ASCII字符时需注意编码转换。例如,汉字通常占用3个字节,特殊符号可能占用更多。 二进制格式
效率优化:对于大规模数据转换,建议使用 `bitarray` 模块或内置函数以提高效率。
通过以上方法,可以灵活实现字符与二进制之间的转换需求。