如果这是一个愚蠢的问题,请原谅我。我目前正处于通过Skillsoft课程学习Python的初级阶段。讲师使用的一个例子是:int("0xff",16)
,它计算并打印255。
我只是感到困惑,因为,虽然我理解0xff是“具有255整数值的十六进制数字FF”(感谢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“和”int("hello",16)
“都是字符串时,int("0xff",16)
如何计算而不是int("hello",16)
?
发布于 2019-09-14 06:29:12
因为"0xff"
是一个表示十六进制数(基代码)的字符串,并且十六进制数的数字范围是从0
到9
以及从a
到f
,所以"hello"
有"h"
、"l"
和D916
>,它们都不是有效的十六进制数字。
"0xff"
中的"0x"
只是用来指定这是一个十六进制字符串,实际的数字只是"ff"
(int("ff", 16) ==> 255
)。
要了解允许使用字符串的原因,请考虑17
-base number系统(0-9
和a-g
)中的一个数字,如何将int
与此系统中的"gg"
这样的数字一起使用,int("gg", 17)
。
您可以将int
与"hello"
一起使用,但只能使用大于或等于25
(因为10 + ord(max("hello")) - 97 + 1 == 25
),int("hello", 25) ==> 6873049
的基数。
https://stackoverflow.com/questions/57930970
复制相似问题