我有一个像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
(如何消除连字符?)
答案 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