python - 如何将 0 和 1 转换为二进制并返回用于 Huffman 算法?
问题描述
目前,我正在编写 Huffman 算法,但在转换二进制部分时遇到问题。
该程序的其余部分已经在运行。该程序可以从符号创建一棵树,并且可以创建代表符号的 0 和 1 字符串。但现在我想将此字符串转换为二进制格式并再次转换回来。目前,我正在使用此代码将字符串转换为二进制。
def toBytes(data):
b = bytearray()
for i in range(0, len(data), 8):
b.append(int(data[i:i+8]), 2)
return bytes(b)
我可以将此字符串转换为二进制格式,但无法将其转换回来。例如,当我在函数中插入“01111101011000”时,它会返回 b'}\x18'。如何将此二进制格式转换回我的 0 和 1?
解决方案
您可以通过使用两个观察来编写字节到二进制字符串的方法:
- 您可以使用 str.format 的
b
类型说明符将整数转换为等效的 1 和 0 字符串。 bytes
迭代对象时,可以将其视为整数列表。
>>> def to_bin(b):
... return "".join("{:08b}".format(x) for x in b)
...
>>> b = b'}\x18'
>>> print(to_bin(b))
0111110100011000
推荐阅读
- asp.net-mvc - 使用 js 和 asp.net MVC 的新消息通知?
- php - 如何将 DATA 转换为输入字段 - PHP
- terraform - Terraform 和 AWS CodePipeline - 在舞台上动态定义操作
- php - imagick:无法读取文件
- eclipse-rcp - 工具栏在 E4 中无法正确缩放
- perl - 如何使用记录器对象获取附加文件名?
- ajax - 使用 ajax 自定义 Wordpress wp_login_form()
- android - 在 RecyclerView 中所做的微调器选择在滚动出视图时会被重置
- perl - 在 perl 之后找到匹配并复制行
- javascript - 在 Node.Js 中搜索套接字的最佳方法是什么?