2013-03-25 83 views
0

我一直在研究一個可以將十進制數轉換爲十六進制數的python應用程序,然後做相反的操作。我無法將用戶輸入存儲爲十六進制數字。這對於我的程序的功能來說是相當重要的,因爲我需要問他們想將哪個數字轉換回十進制數字。我只需要將其存儲爲除字符串或整數以外的其他數據類型,但仍需要提示。如何將輸入存儲爲十六進制數字?

到目前爲止,我已經嘗試過這種方法:

num = int(hex(input("Which Hexadecimal number would you like to convert to decimal/denary? \n"))) 

但它仍然認爲,十六進制數字實際上是一個字符串。

回答

1

hex()將整數轉換爲十六進制表示形式的字符串。 input()改爲返回一個字符串值。

你想只保存用戶直接進入值:

num = input("Which Hexadecimal number would you like to convert to decimal/denary? \n")) 

然後,您可以驗證它嘗試將其與int()轉換爲十進制的十六進制數字:

try: 
    decimal = int(num, 16) # interpret the input as a base-16 number, a hexadecimal. 
except ValueError: 
    print("You did not enter a hexadecimal number!") 
+0

輸入()總是返回字符串,如果用戶想要什麼將用戶十六進制輸入轉換爲二進制。像's = input('輸入十六進制')'bin(s)'。但是這不起作用,因爲輸入已經返回了'0xff'而不是'0xff'。 – user2728397 2016-01-25 18:27:39

+0

@Rakesh:如果要將十六進制數字轉換爲字節,可使用'binascii.unhexlify()'。 – 2016-01-25 18:41:37

0

下面是我在提示輸入十六進制時使用的方法。

首先,就接受它作爲常規輸入

hexValue1 = input("Input first hex value") 

然後,將其轉換成其相應的整數,像這樣

hexValue1 = int(hexValue1, 16) 

現在,你可以執行任何數學函數要使用相應的整數並且如果您希望將結果作爲十六進制值返回,請確保按原樣返回

print(hex(hexValue1)) 

或者其他想要返回值的方法。它會以典型的0xaa11格式返回一個字符串。所以你可能需要進一步轉換它以使用它。

因此,例如,一個簡單的程序採取兩個十六進制值輸入並執行兩者的XOR,並返回十六進制的結果是這樣的:

hex1 = input("Hex 1 ") 
hex1 = int(hex1, 16) 
hex2 = input("Hex 2 ") 
hex2 = int(hex2, 16) 
xor = hex1^hex2 

print(hex(xor)) 
相關問題