2012-11-23 177 views
1

可能重复:
Convert an integer to binary without using the built-in bin function整数二进制

该函数接收作为参数的数在基座10和应返回代表以二进制表示为列表中的相同的值的列表的位,列表中的第一个元素是最重要的(最左边的)位。

convert_10_to_2(11)应该返回[1, 0, 1, 1]

我不能用二元函数或函数外,因此具有更复杂的方式来完成。

b = '' 
while num > 0: 
    b = str(num % 2) + b 
    num >>= 1 
return (b) 

好我得到了我的代码终于到了,还好我得到'1011',但我需要[1,0,1,1],我真的不能使用任何功能,如bin(x)binary_list。这就是这个问题这么久了。

+1

如果你有工作作为一个字符串,你可以字符串分割得到一个数组。 – xbonez

+1

本网站要求您仅发布有问题的错误代码。所以,只需发布​​它。 –

+2

这是如何从你的[最后一个问题]不同(http://stackoverflow.com/questions/13522773/convert-an-integer-to-binary-without-using-the-built-in-bin-function)上学科? – DSM

回答

1

您可以初始化一个列表,然后使用for循环遍历字符串并在每次迭代中将该值附加到列表中,就像这样。

binary_string = convert_10_to_2(11) 

binary_list = [] 

for character in binary_string: 
    binary_list.append(int(character)) 
+0

对不起,我不能使用binary_list,虽然我被允许使用附加 – user1790201

+1

我不完全确定你的意思。 'binary_list'只是一个声明一个列表的变量,而不是一个函数。 'binary_list'可以重命名为任何东西,它可以正常工作。换句话说,它只是一个普通的列表,并且与二进制数字完全没有关联,因此它不会被视为比赛或类似的“作弊”。 – Jeremy

0

这会为Python 2.x和3.x两个工作:

list(map(int, '{:b}'.format(11))) 

用其他号码代替11,如果你愿意的话。如果不需要对Python 3.x的支持,请去除附加的list调用。如果你真的觉得有必要的话,可以把它放在函数中。

+0

我无法使用格式,如果您有任何其他建议,请提供给他们 – user1790201

+0

为什么和不能使用什么?你可以用什么? – Tadeck