最近在用Python寫遺傳算法時,發現需要將十進制的整數轉換成二進制數,那么怎么來轉換呢?當然如果你學過進制轉換的有關計算方法,你可以手動編寫一些函數來實現,不過總體來說還是比較麻煩的,這里介紹Python內置的兩個函數bin()和int(),利用這兩個函數可以輕輕松松完成轉換。
一、十進制整數轉換成二進制數
代碼如下:
num = 8 numb = bin(num) print(numb)
這段代碼的輸出結果如下:
0b1000
0b是什么呢?有過一定計算機專業基礎的人一定知道,其實他只是表示二進制數的前綴,也就是說加個0b在前面表示這個數不是一千,而是二進制的一零零零.
二、二進制數轉換成十進制整數
代碼如下:
numb = 0b1101
numb2 = '0b1101' num = int(numb)
num1 = int(numb2 , 2) print(num)
print(num1)
這段代碼輸出的結果如下:
13
13
也就是說我們通過一個簡單的int函數將0b1101轉換成了十進制的13。這里要強調的是,我們在寫二進制數的時候,一定要加上0b這個前綴,否則它會把你轉換成的數當成十進制數,也就是輸出結果還是1101.還有一點要注意的就是,當你給出的二進制數是字符串類型的時候,在你使用int函數時要像上面代碼寫的那樣后面加上個參數2,否則會報錯。可以簡單地理解成告訴int函數你輸入的這個字符串不是個字符串那么簡單,而是代表着二進制。
三、小貼士
還有一點需要大家注意的是,通過bin函數轉換成的二進制數的類型是一個字符類型,可以通過下標遍歷每個字符,但不能當做整型的數字來處理,所以大家在實際應用中,可能還需要將后幾位取出來進行int類型的強制轉換。而int轉換成的十進制數的類型就是int型的,因為int函數本身也可以當做一個強制類型轉換的函數。