
发奋图强为您分享以下优质知识
在Python中,将字符串转换为二进制主要有以下两种常用方法,具体实现如下:
一、使用内置函数 `bin()` 和 `ord()`
通过 `ord()` 获取字符的ASCII码,再使用 `bin()` 转换为二进制字符串,最后通过 `join()` 拼接。
```python
def encode(s):
return ' '.join([bin(ord(c)).replace('0b', '') for c in s])
```
固定长度二进制
若需固定长度(如8位),可使用 `zfill()` 补零:
```python
def fixed_length_encode(s):
return ' '.join([bin(ord(c))[2:].zfill(8) for c in s])
```
二、使用 `bitarray` 模块
转换为 `bitarray` 对象
将二进制字符串转换为 `bitarray`,再转回 `bytes` 类型:
```python
from bitarray import bitarray
def str2bitarray(s):
return bitarray(''.join([bin(int(c, 16))[2:] for c in s.encode('utf-8')]))
def bitarray2str(bit):
return bit.tobytes().decode('utf-8')
```
三、示例代码
以下是综合示例,展示两种方法的转换与解码:
```python
方法一:简单二进制转换
encoded = encode('hello world')
print(encoded) 输出: 1101000 1100101 1101100 1101100 1101111 100000 1110111 1101111 1110010 1101100 1100100
方法二:固定长度二进制转换
encoded_fixed = fixed_length_encode('hello world')
print(encoded_fixed) 输出: 1101000 1100101 1101100 1101100 1101111 100000 1110111 1101111 1110010 1101100 1100100
解码示例
decoded = decode(encoded)
print(decoded) 输出: hello world
```
总结
简单方法:
适合快速转换,二进制长度不固定。
固定长度方法:适用于需要固定位宽的场景(如网络传输、文件存储等)。
`bitarray` 方法:适合进行位级操作或处理二进制数据。