2017-08-11 72 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'不会将十六进制转换为十进制数;它将字符串转换为一个整数,它以二进制内部存储,而不是十进制。如果您在提示处显示该整数(例如,通过打印该整数),则会进行从整数到字符串的转换;这是小数进入图片的唯一地方。 –