检查整数的进制表示
我这样定义了一个整数:
x = 0xFF
但是当我向解释器询问它的值时,我得到的是:
255
有没有办法强制解释器以我定义的方式返回这个值?有没有办法检查一个整数的进制表示?
7 个回答
2
0x是十六进制的表示方式。
如果想让解释器显示原始的数值,可以使用以下代码:
hex(x)
>>> x = 0xFFF
>>> x
4095
>>> hex(x)
'0xfff'
>>>
4
不。 无论是Python还是我知道的其他语言,都不会保存你写整数时使用的进制。比如说,0xFF
和 255
是没有区别的。这两个值在计算机内部都是以相同的方式表示的:二进制。
如果你想记住一个进制,那你需要用不同的类型来存储,而不是用
int
。你可以把整数以字符串的形式存储,比如"0xFF"
,或者用元组的形式(0xFF, 16)
。因为int
本身并不包含你想要的信息。更现实一点,你需要自己负责把输出格式化成你想要的样子。如果你把一个十六进制的数字传给一个函数,然后得到一个结果,格式化这个结果成十六进制也是你的责任。我不会指望这段代码能“按你想要的那样工作”:
print foobar(10) print foobar(0xFF)
要明确你的意图。如果默认的格式(十进制)不符合你的要求,那就覆盖它:
print '%04d' % (foobar(10))) print '%04x' % (foobar(0xff)))
1
无论如何,数值在计算机里都是用二进制表示的。
Python 不会记得你最开始是怎么写这个数值的,当你把它赋值给一个变量的时候。
如果你想保存这些信息,可以创建一个专门的类来帮你存储这些信息,并正确显示数值。需要注意的是,当你赋值的时候,你必须明确指定数值的进制。