python - 如何从地图对象中获取二进制值(
问题描述
我有这个二进制数据列表:
binary:
[[1, 1, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1],
[0, 1, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0],
[0, 1, 0, 1, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0]]
我正在尝试删除逗号和空格,以便获得 10 个二进制数,并且需要转换为十进制。
decimal=0
numbers=[]
for i in range(0,len(binary)):
numbers.append(map(float, str(binary[i]).split(',')))
#print(list(numbers))
decimal = decimal*2 + numbers[i] ---->this line give error #TypeError: unsupported operand type(s) for +: 'int' and 'map'
数字的输出是一张地图:
[<map at 0x7f8b62798080>,
<map at 0x7f8b62798208>,
<map at 0x7f8b627983c8>,
<map at 0x7f8b62798588>,
<map at 0x7f8b62798748>,..]
如何摆脱这个问题?或者有没有更好的方法来做到这一点?
解决方案
一种更简单(因此更好)的方法是使用int()
将二进制字符串转换为整数值:
>>> numbers = [int(''.join(str(bit) for bit in bits), 2) for bits in binary]
>>> numbers
[48, 16, 63, 16, 16, 16, 20, 20, 16, 20]
第二个参数int()
指定传入数据的基数,基数 2 为二进制。将''.join(str(bit) for bit in bits
每个列表项的元素转换为字符串,然后将这些字符串连接起来以创建位字符串。
推荐阅读
- python - 如何在 Python 中创建或删除文件时使用看门狗进行监控
- jquery - 列表上的嵌套点击事件正在拨打多个电话
- python - 字符串中的 Python 字符匹配
- python - 如何根据日期列总结python中tablewidget的所有价格?
- sql - 如何使用 ViewModel 构建控制器
- delphi - 通过Delphi带参数执行tregsvr.exe
- r - 循环时使用 group_by 汇总数据
- python - 用于 Windows 的带有 git 安装的 Docker 文件
- reactjs - 当路由来自另一个组件时,React路由器重定向不起作用
- awk - 如何使用awk为列打印过滤条件下的所有列?