【问题标题】:How to convert binary values within a list of ndarray objects to decimal values?如何将 ndarray 对象列表中的二进制值转换为十进制值?
【发布时间】:2020-03-15 11:22:56
【问题描述】:

我的列表包含 49 个条目。条目的大小各不相同。例如,第一个条目由 3032 行和 27 列组成。这对应于 27 个信号,每个信号有 3032 个数据。数据目前是二进制的。列的大小在一个条目中也有所不同(27 列的大小不同)。例如,第一个条目的第一个信号具有以下格式:

print(signal_reshape_list[0][:,0] #print first entry, first signal with all columns 

输出:[list([1, 1]) list([1, 1]) list([1, 1]) list([1, 1])....list([1, 1])列表([1, 1])]

list([1, 1]) 对应于二进制数 0x00000011,因此将“3”作为十进制数表示。

print(signal_reshape_list[0][:,0] #print first entry, third signal with all columns 

输出:[list([0, 0, 1, 0]) list([1, 0, 1, 0]) list([0, 0, 1, 1]) .... list([0 , 1, 1, 0]) 列表([0, 0, 1, 0]) 列表([0, 0, 1, 0])]

list([0, 0, 1, 0]) 对应于二进制数 0x00000010,因此将是“2”作为十进制数表示。 list([1, 0, 1, 0]) 对应于二进制数 0x00001010,因此将“10”作为十进制数表示。等等……

【问题讨论】:

    标签: python binary decimal data-conversion


    【解决方案1】:

    你有一个这样的列表:

    Output: [list([0, 0, 1, 0]) list([1, 0, 1, 0]) list([0, 0, 1, 1]) .... list([0, 1, 1, 0]) list([0, 0, 1, 0]) list([0, 0, 1, 0])]

    渴望输出就像 :[2,10,3,..,6,2,2] 它可以通过以下应用于输出的代码来关闭:

    a= [list([0, 0, 1, 0]), list([1, 0, 1, 0]), list([0, 0, 1, 1])]
    out=[]
    for l in range(0,len(a)):
        A=a[l]
        out.append(A[3]+A[2]*2+A[1]*4+A[0]*8)
    
    print(out)
    

    然后输出: out: [2, 10, 3]

    更新:

    每个列表元素应该连接以获得二进制字符串,如0010然后它将通过 int(result, 2) 更改为十进制值 这是代码:

    a= [list([0, 0, 1, 0]), list([1, 0, 1, 0]), list([0, 0, 1, 1,0, 0, 1, 1])]
    out=[]
    for l in range(len(a)):
        result= ''
        for element in a[l]:
            result += str(element)
        out.append(int(result,2))    
    
    print(out)
    

    二进制输出:['0010', '1010', '00110011'] 十进制输出:[2, 10, 51]

    【讨论】:

    • 感谢您的回答,但不幸的是,由于我列表中的条目不同,此解决方案将失败。例如,如果我的列表只有三个条目: [list([0, 0, 1]) list([1, 0, 1])..] 您的代码不起作用。也可能发生,我的列表中有近 35 个条目: [list([0, 0, 0, 1, 1, 1, 0, 0, 0, 0........]) .. ...]。对于这种情况,它也不起作用。
    • 它可以与最多 for 元素一起使用而不会出现问题。是的,您的权利越多就会出现问题。现在我明白你的问题了。让我检查一下
    • 另一种解决方案是从每个字符串中获取一个二进制字符串:[list([0, 0, 1]) list([1, 0, 1])。作为二进制字符串,我们将得到“001”和“101”。使用 int('binary_string', 2) 我会得到我的结果。你知道如何创建二进制字符串吗?
    • 您可以使用它来将您的列表转换为二进制字符串:让我更新 ansert result= '' for element in a[0]: result += str(element) print(result)
    • 建议:result = ''.join(str(element) for element in a[l])
    猜你喜欢
    • 2017-07-15
    • 2020-04-04
    • 2018-10-20
    • 2019-01-23
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2012-01-06
    • 2016-03-06
    相关资源
    最近更新 更多