繁体   English   中英

如何从地图对象获取二进制值( <map at 0x7f8adefd7c50> )在python中?

[英]How to get the binary values from map object (<map at 0x7f8adefd7c50>) in 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将每个列表项的元素转换为字符串,然后将其合并以创建位字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM