基于python中的Dictionary值生成二进制字符串

时间:2014-09-25 18:43:39

标签: python python-2.7

我有一个像dict = { A:3, B:5, C:3, D:2, E:6, F:5}

这样的词典

我想编写一个函数,根据二进制位宽的值生成一个连接的二进制流。

如果宽度为7:二进制0101010 - 在lsb位置以0开始的7位

假设函数是func(B, D, E):我的输出应生成

的连接二进制流
0101010101010 

,因为:

{01010 (B) + 10 (D) +  101010 (E)}

每个值的lsb位必须始终为零。

预期输出0101010101010

以下是我的尝试:

def Generate_binary_stream(width):
output_stream = ""
bit = 0
for i in range (0,width):
    output_stream += str(bit)
    bit = ~bit

print ("The bitstream for width %d is %s"%(width,output_stream))

我得到的输出:0-10-10-10-10(如何消除连字符?)

2 个答案:

答案 0 :(得分:0)

您可以使用bin函数转换为二进制文件:

  my_list=[]
  >>> def conv(*args):
    ...  for i in args:
    ...    my_list.append(bin(dict[i]))
         print ''.join(map(str,my_list))

  >>> conv('A','B','C')
  0b110b1010b110b110b1010b11

答案 1 :(得分:0)

不确定我是否理解正确,但这似乎产生了预期的结果:

width = { 'A':3, 'B':5, 'C':3, 'D':2, 'E':6, 'F':5}

def bits(width):
    return ('0' if width % 2 else '') + '10' * (width // 2)

def to_bits(s):
    return ''.join(bits(width[x]) for x in s)

print to_bits('BDE') # 0101010101010