我想生成自unix时代以来当前纳秒数的十六进制. (不需要是正确的,只是精确)
以下是在bash中获得当前纳秒的方法:
ksoviero@ksoviero-Latitude-E7440:~$date +%s%N
1401993044859711108
现在,要将其转换为十六进制,我们使用printf:
ksoviero@ksoviero-Latitude-E7440:~$printf '%x\n' $(date +%s%N)
1374e157ee379028
看看这有多容易?
现在,让我们尝试用Python做同样的事情.首先,我们得到当前的纳秒:
>>> from time import time
>>> print int(time() * 10**9)
1401993206893091840
现在,我们将其转换为十六进制:
>>> print format(int(time() * 10**9), 'x')
1374e172f90a6400
我…什么!?最后那两个零来自哪里?他们总是在那里,他们不应该……
好吧,等等,也许Python的十六进制函数无法处理那么大的数字.如果我们只复制并粘贴纳秒,会发生什么?
>>> print format(1401993044859711108, 'x')
1374e13f086e6e84
等等,那有效!?
有人想知道发生了什么事吗?为什么直接给出它会正确地十六进制纳秒,但不是当它是一个函数的结果时?