2016-01-23 106 views
0

我想使用使用Python 2.7的Python 2.7 INT(STR,基地)混亂

當我做INT(X,基地)級功能: num = int('100', 2) 我收到答案4

然而, ,當我做num = int('72', 2)我得到以下回溯。

Traceback (most recent call last): 
    File "foobar1.py", line 26, in <module> 
    num = int('72', 4) 
ValueError: invalid literal for int() with base 4: '72' 

我不確定我錯過了什麼。

+0

你期望什麼? – user2357112

回答

1

的基數是規定值的數字基地。例如,將基數設置爲16意味着您正在使用十六進制數字,而將其設置爲8表示您正在使用八進制數字。

八進制(基數8)中,可用的數字是0--7。嘗試使用函數num = int('89',8)轉換數字'89'會給您一個錯誤,因爲數字8和9不用於基數爲8的數字。同樣,在基數2中,唯一可用的數字是0和1 - 允許的最高數字將是基數 - 1.

希望這可以解決問題。

+0

謝謝,那正是我需要的信息。我想我實際上並不清楚功能在做什麼。 – AlliDeacon

1

72不是一個二進制數(至少它是基數爲8),但是當您指定基地2時,您斷言它是。所以你的功能失敗了。

num = int('1001000', 2) 

或:

num = int('1020', 4) 

會按預期工作,例如,給你一個整數,將相當於十進制72

1

第二個參數表示基準。基數2表示數字只能使用2個數字(0和1)。當您試圖從二進制轉換72(基2)時,它會失敗,因爲編號7和2在二進制中不存在。

如果你正試圖轉換你的電話號碼二進制,用bin()