如果这是一个愚蠢的问题,请原谅我。我目前正在通过Skillsoft课程学习Python。讲师使用的示例之一是:int("0xff",16)
并进行了计算,并打印了255。
我只是感到困惑,因为尽管我知道0xff是“十六进制数FF,其整数值为255”(感谢Google),但我不明白“ 0xff”如何不被视为字符串报价。当我尝试int("hello",16)
时遇到:
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
int("hello", 16)
ValueError: invalid literal for int() with base 16: 'hello'
当“ 0xff”和“ hello”都是字符串时,int("0xff",16)
如何计算而不是int("hello",16)
?
答案 0 :(得分:1)
因为"0xff"
是代表十六进制数字(以16
为基数)的字符串,十六进制数字的范围为0
到9
和{{1} }到a
,f
具有"hello"
,"h"
和"l"
,但都不是有效的十六进制数字。
"o"
中的"0x"
仅用于指定这是一个十六进制字符串,实际数字仅为"0xff"
("ff"
)。
要了解为什么允许使用字符串,请考虑基于int("ff", 16) ==> 255
的数字系统中的数字(17
和0-9
),如何将a-g
与数字一起使用例如int
,例如"gg"
。
您可以将int("gg", 17)
与int
一起使用,但只能使用大于或等于"hello"
的底数(因为25
),10 + ord(max("hello")) - 97 + 1 == 25
。