我有一个值(称为地址),这是一个内存地址,我试图弄清楚它指向的位置。
(pdb) p address
18446738026812173208L
借助十六进制转换器,我可以发现它等于0x0AFEBFB4
,但是如何从调试器本身强制使用十六进制格式的输出?
答案 0 :(得分:4)
您可以使用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
都追加L
。