我搜索这些时间(以秒为单位(和这些时间戳之间的关系
30 seconds => 1189765120
1 minute => 1198153728
2 minutes => 1206542524
4 minutes => 1214930944
这些信息来自";Image Line FL Studio";音乐软件。
我试图用Python制作一个程序来操作FLP文件,但没有成功地搜索到以下函数:F(30) = 1189765120
好的,这一次我找到了答案(长度的1/2、1、2、4分钟的指数级数,以及计数位,0几乎总是给我提示:它看起来像浮点表示(
#include <stdio.h>
#include <stdint.h>
int main(){
uint32_t l[]={1189765120, 1198153728, 1206542524, 1214930944};
for(int i=0; i<4; i++){
printf("%fn", *(float *)(l+i));
}
}
给出
30000.000000
60000.000000
120001.468750
240000.000000
所以,你在这里得到的,只是float32以毫秒为单位的时间表示。毕竟信息就在那里,而且它确实是一个时间戳。在第三种情况下,额外的毫秒和一些微米和纳秒使逆向工程更加困难。
编辑:由于它被标记为python(尽管这更像是一个数学难题,而不是一个编码问题(,以下是如何在python中完成它(在C中处理比特更自然,但python中有一个包可以做到这一点(
import struct
l=[1189765120, 1198153728, 1206542524, 1214930944]
for x in l:
print(x, '=>', struct.unpack('f', struct.pack('I', x))[0])
第二次编辑:直到现在我才意识到你的问题是关于F(30(=1189765120,而不是相反(我太专注于谜题了(,好吧,这只是反向
import struct
def F(sec):
return struct.unpack('I', struct.pack('f', sec*1000))[0]
>>> F(30), F(60), F(120), F(240)
(1189765120, 1198153728, 1206542336, 1214930944)
请注意F(120)
与您给出的数字略有不同。用额外的微秒解释