首页  > 教育解读  > python如何转换成二进制字符串

python如何转换成二进制字符串

2025-05-04 10:13:17
发奋图强
发奋图强已认证

发奋图强为您分享以下优质知识

在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` 方法:适合进行位级操作或处理二进制数据。