副标题及;延迟时间(另一个C溢出怀疑)
我试图计算要添加到字幕文件中的时间偏移量,以纠正延迟。下面显示的部分是在将副标题及;延迟时间(另一个C溢出怀疑),c,C,我试图计算要添加到字幕文件中的时间偏移量,以纠正延迟。下面显示的部分是在将hh:mm:ss,uuu(uuu代表微秒)标记到time[]数组中之后出现的。我把时间转换成微秒,然后加上实际时间和滞后时间,得到最后的时间 程序正确地计算实际和滞后时间。但是,它给出了错误的最后一小时时间。我是否遇到了下面的代码无法处理的溢出情况 编辑:我意识到了错误。对于小时时间,我应该除法而不是取余数 int i; int time[4]; unsigned long totalTime,totalLagTime;
hh:mm:ss,uuu
(uuu代表微秒)标记到time[]
数组中之后出现的。我把时间转换成微秒,然后加上实际时间和滞后时间,得到最后的时间
程序正确地计算实际和滞后时间。但是,它给出了错误的最后一小时时间。我是否遇到了下面的代码无法处理的溢出情况
编辑:我意识到了错误。对于小时时间
,我应该除法而不是取余数
int i;
int time[4];
unsigned long totalTime,totalLagTime;
...
for(i=0;i<4;i++)
{
printf("time[%d] = %d\n",i,time[i]);
}
for(i=0;i<4;i++)
{
printf("lag time[%d] = %d\n",i,lagTime[i]);
}
totalTime = 1000*(3600*time[0] + 60*time[1] + time[2]) + time[3];
printf("total time is %u in milliseconds\n",totalTime);
totalLagTime = 1000*(3600*lagTime[0] + 60*lagTime[1] + lagTime[2]) + lagTime[3];
printf("total lag time is %u in milliseconds\n",totalLagTime);
totalTime += totalLagTime;
printf("Now, total time is %u in milliseconds\n",totalTime);
time[0] = totalTime % 3600000;
printf("hour time is %d\n",time[0]);
难道不是吗
time[0] = totalTime / 3600000;
您有一个逻辑错误:36694330
mod
3600000实际上是694330
你到底想做什么?
time[0]=totalTime%3600000代码>您在这里尝试做什么?你想把它从毫秒转换成小时吗?10小时,10分钟,10秒和10毫秒的延迟时间,对于不到一分半钟的电影来说?这是一个子文件的一小部分,@Thomas,我想检查一下这个程序是否适用于极端情况。现在我看到了代码,我意识到它应该是totalTime/3600000
,谢谢穆根!
time[0] = totalTime / 3600000;