我有一个值(称为地址),它是一个内存地址,我试图找出它指向的位置。
(pdb) p address
18446738026812173208L
在十六进制转换器的帮助下,我可以发现这等于0x0AFEBFB4
,但是如何强制调试器本身进行十六进制格式的输出?
您可以使用hex
、oct
和bin
函数int
:
In [8]: hex(18446738026812173208L)
Out[8]: '0xfffffa8018d46b98L'
In [9]: oct(18446738026812173208L)
Out[9]: '01777777650003065065630L'
In [10]: bin(18446738026812173208L)
Out[10]: '0b1111111111111111111110101000000000011000110101000110101110011000'
In [11]: int(bin(18446738026812173208L), 2)
Out[11]: 18446738026812173208L
In [12]: int(oct(18446738026812173208)[:-1], 8)
Out[12]: 18446738026812173208L
In [13]: int(hex(18446738026812173208)[:-1], 16)
Out[13]: 18446738026812173208L
切片是必需的,因为所有三个函数都返回一个字符串,并且都返回oct
一个hex
append L
。