1

我正在尝试将以下代码从 c 转换为 Python。C 代码如下所示:

  seed = (time(0) ^ (getpid() << 16));
  fprintf("0x%08x \n", seed);

输出像 0x7d24defb 这样的值。

和python代码:

  time1 = int(time.time())
  seed  = (time1 ^ (os.getpid() <<16))

输出值如:1492460964

我需要在 python 代码中修改什么以便获得类似地址的值?

4

3 回答 3

6

这取决于值的显示方式。-functions 中的%x标志printf以十六进制显示给定值。在 Python 中,您可以使用该hex函数将值转换为十六进制表示。

于 2013-04-16T10:33:42.500 回答
1

等效的 Python 代码:fprintf("0x%08x \n", seed);

>>> '0x{:08x}"'.format(1492460964)
'0x58f525a4"'

请注意,hex()单独不会像 C 代码那样将零填充到大小 8。

于 2013-04-16T10:36:40.820 回答
1

我想这就是你的意思:

>>> n =hex (int(time.time()) ^ (os.getpid() <<16))
>>> print n
0x431c2fd2
>>>
于 2013-04-16T10:54:08.170 回答