2014-02-22 48 views
0

我有持有二进制数作为一个字符串的字符串从字符串对象转换为二进制值蟒蛇

string = '0b100111' 

我想有一个值不是一个字符串类型,但值(伪代码)

bin(string) = 0b100111 

任何pythoners知道一个简单的方法来做到这一点?

正是这种代码为Codecademy网站的组成部分:(回答实施后)

def flip_bit(number,n): 
    if type(number)==type('s'): 
     number = int(number,2) 
    mask=(0b1<<n-1) 
    print bin(mask) 
    print mask 
    desired = bin(number^mask) 
    return desired 
flip_bit('0b111', 2) 
+1

你究竟想要什么? –

+0

将字符串对象转换为二进制值或整数。 –

+0

您的'bin()'函数仅用于您的示例代码中,它使用数字参数而不是字符串。所以我会建议bin()函数用于呈现二进制值的字符串表示形式,而您的问题似乎意味着相反。 – holdenweb

回答

3

有关调用int功能与基地2什么?

>>>s = '0b100111' 
>>>b = int(s, 2) 
>>>print b 
39 
+0

O ...它是一个很棒的方式。谢谢! –

0

你可以把它的二进制通过将A B引号前:

>>> s = b'hello' 
>>> s.decode() 
'hello' 
+0

谢谢,这也是一个不错的窍门。 –

0

恐怕使得它作为理想化你的问题是不可能的。因为你想要的是一系列字符,它只能是一个字符串(或者你可以将它转换为一个整数)。但它仍然是可行的多项具有内置职能 - 例如:

num1 = '0b0110' 
num1 = '0b0101' 

result = int(num1, 2) + int(num2, 2) 
print(bin(result)) 

,你可以在你的代码,synatx的唯一方法是,如果是二进制数成了名本身。 Python仅支持基数10中的数字操作,因为它仅以该格式解释数字输入。否则,它是一个字符串,数字不能被操纵。

+0

我明白你的意思了。虐待编辑问题。 –

+0

Python通常以十进制表示数字,但在内部它传统上使用二进制(基2)格式来存储整数和浮点数,而不是十进制(尽管金融算术和其他定点应用程序有'decimal'模块)。 – holdenweb