2016-10-03 62 views
0

我寫了一個代碼嘗試並將4位二進制數轉換爲十六進制數。唯一的一點是,當我輸入一個以'1'開頭的值時,就會出現轉換,而如果我輸入一個以'0'開頭的值,它就不起作用。任何幫助?二進制到十六進制轉換器

print ("""Here's how the program will work. You need to get your binary number ready. 
     if it is 8 bit, split it into four, because thats how hexadecimal works. Make sure all your conversions 
     are slip into '4' bits like this: 
     01001101 will turn into: 
     0100 ,and then 1101""") 
time.sleep(6) 
print ("""So, for example, the program will ask you for your binary number. Like this: 
     Enter your binary number here: 
     Then you put in your number, like this: 
     Enter your binary number here: 0100 
     Lastly, the program will give you your hexadecimal number, then ask you if you would 
     like to do another conversion in this area, or end program.""") 
time.sleep(6) 
HEXADECIMAL = int(input("Please enter your binary number here: "))       
if HEXADECIMAL == 0000: 
    print ("Your hexadecimal value is 0") 
if HEXADECIMAL == 0001: 
    print ("Your hexadecimal value is 1") 
if HEXADECIMAL == 0010: 
    print ("Your hexadecimal value is 2") 
if HEXADECIMAL == 0011: 
    print ("Your hexadecimal value is 3") 
if HEXADECIMAL == 0100: 
    print ("Your hexadecimal value is 4") 
if HEXADECIMAL == 0101: 
    print ("Your hexadecimal value is 5") 
if HEXADECIMAL == 0110: 
    print ("Your hexadecimal value is 6") 
if HEXADECIMAL == 0111: 
    print ("Your hexadecimal value is 7") 
if HEXADECIMAL == 1000: 
    print ("Your hexadecimal value is 8") 
if HEXADECIMAL == 1001: 
    print ("Your hexadecimal value is 9") 
if HEXADECIMAL == 1010: 
    print ("Your hexadecimal value is A") 
if HEXADECIMAL == 1011: 
    print ("Your hexadecimal value is B") 
if HEXADECIMAL == 1100: 
    print ("Your hexadecimal value is C") 
if HEXADECIMAL == 1101: 
    print ("Your hexadecimal value is D") 
if HEXADECIMAL == 1110: 
    print ("Your hexadecimal value is E") 
if HEXADECIMAL == 1111: 
    print ("Your hexadecimal value is F") 

您可以嘗試運行此代碼並以0110開頭,但它不會轉換。任何幫助?

+0

您正在將用戶輸入轉換爲「int」。 'int'不要以前導零開始。只需將用戶輸入保持爲字符串,並通過與字符串進行比較來執行測試。 – Efferalgan

+0

首先,它是'BINARY',而不是'HEXADECIMAL'。 – skovorodkin

+0

'int'強制轉換不能正常工作。把它保持爲一個字符串! – MMF

回答

0

您不必使用if/else語句超時。有一種很酷的方式,你可以在python中使用int(),如果你使用一個字符串,int()函數可以直接將它轉換爲任何基礎。

HEXADECIMAL = str(input()) 

base = 16 # for Hex and 2 for binary 
msg = "Your hexadecimal value is" 
print (msg, int(HEXADECIMAL, base)) 

這將爲你做。但是如果你想堅持你的方法,那麼你應該在二進制之前添加一個0b0b0010之前的東西,前導零是非法的,0010是非法的。

+0

那麼我在哪裏把它放在我的程序中? – Lucas

+0

用上面的代碼替換第二個'time.sleep(6)'後的所有內容。 –

0

當輸入開頭的前導0的整數,蟒將其解釋爲在基座8是:

a = 0110 
print a 

將輸出

72 

因此,在輸入刪除前導0,或在鑄造前將其取出int()就可以了

-1

取代

HEXADECIMAL = int(input("Please enter your binary number here: ")) 

用,

temp = input("Please enter your binary number here: ")      
HEXADECIMAL = int (temp) 

加除去睡眠時間,如果有一個錯誤。

+0

您發佈的兩個代碼塊功能上相同,既不能解決原始問題。 – kfb

+0

這不會改變任何東西,它沒有任何意義。 –

相關問題