2014-02-22 77 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