2017-08-11 105 views
2

如何添加/減去用戶輸入的十六進制數?加/減十六進制

像:

basehex = input() 
sechex = input() 

sum = hex(basehex - sechex) 



print(sum) 

我得到:類型錯誤:不支持的操作數類型(S) - : '海峽' 和 '海峽'

我該怎麼辦呢?我必須將它們轉換爲int?然後我不能讓他們作爲十六進制(0xFFFFFF)...?

我能做到這一點的唯一方法是:

basehex = int('255') 
sechex = int('255') 

sum = hex(basehex - sechex) 



print(sum) 

但是這需要我進入basehex/sechex數字,因爲INT不會把它否則:

ValueError: invalid literal for int() with base 10: 'ff' 

感謝: )

+2

如果你想要一個非10的基數,你需要明確地將['base'參數](https://docs.python.org/3/library/functions.html#int)傳遞給'int'。 – user2357112

+1

您的變量類型有衝突。你的輸入是以不能算術的字符串形式出現的,這就是爲什麼你用'int'將它轉換爲整數的原因。從那裏你可以通過執行print(hex(sum))來再次打印十六進制結果(這是一個_representation_) – Peri461

回答

3

感謝@ Peri461

basehex = input() 
sechex = input() 

basehexin = int(basehex, 16) 
sechexin = int(sechex, 16) 



sum = basehexin - sechexin 



print(hex(sum)) 

這段代碼將完成它,通過將十六進制轉換爲小數,然後再將它們轉換(表示)爲十六進制。

+3

注意'int'不會將十六進制轉換爲十進制數;它將字符串轉換爲一個整數,它以二進制內部存儲,而不是十進制。如果您在提示處顯示該整數(例如,通過打印該整數),則會進行從整數到字符串的轉換;這是小數進入圖片的唯一地方。 –