关于4个字节存储时间数据的问题。

nongdun3 2009-08-04 03:13:10
最近买了个三星的MP3,它的同步歌词必须用配套软件才能使用。
可配套软件在Win2003下不能用。
于是打算自己写一个往MP3文件里加歌词的小程序。

经分析发现三星MP3是从MP3文件的ID3v2标签中读的数据
它自定义了静态歌词标签“USLT”,并设计了自己的歌词存储格式。

其它的数据结构已经基本弄清楚了。就差一个时间不知道它是如何存储的。
用WinHex打开加了歌词的MP3文件,可以看出每句歌词是以一个08 00(ASCII中的Backspace)开头
然后跟上四个字节的时间标签,再加上歌词内容。如下:
08 00 TT TT TT TT XX XX XX XX XX (下一句歌词)08 00 TT TT TT TT XX XX XX XX....
TT的四个字节存储时间标签

现在就不知道TT是如何存储时间标签的。
我找了几个特殊的时间点存进文件,用WinHex查看其值对应如下:

AC F7 90 10
00:00.00

AC FF 90 10
00:00.08

AC 80 91 10
00:00.09

AC F7 91 10
00:01.28

AC FF 91 10
00:01.36

AC 80 92 10
00:01.37

AC FF 92 10
00:02.64

时间标签格式为 分:秒.(毫秒x10)


我分析发现前三个字节的最高位都是1,表示正值。
AA BB CC DD

用如下公式计算出来的整数 减去 AA=AC BB=F7 CC=90 时的值,正好等于 (分*60 + 秒)*100 + (毫秒*10)
(AA&0x7F)*0x20 + (CC&0x7F)*0x10 + (BB&0x7F)

但是DD是如何进位的没搞明白。


哪位大虾接触过这方面的东西,或是有这方面经验的帮忙分析一下~~万分感激~!
...全文
134 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zephyrzzz 2009-08-04
把DD忽略了不就好了吗,或者DD是不是表示的小时?
回复
acdbxzyw 2009-08-04
牛。
回复
ToBeTough 2009-08-04
牛,帮顶
回复
发动态
发帖子
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
社区公告
暂无公告