【问题标题】:Reading TAG2 of a mp3 file in a c program在 c 程序中读取 mp3 文件的 TAG2
【发布时间】:2012-09-11 06:11:13
【问题描述】:

我编写了一个c 程序来读取 MP3 文件并打印 TAG2 字段。源代码为:

void main(void)
{
   FILE *w;
   char c[10]={0};    
   int ver, flag, size;    
   w=fopen("test.mp3,"rb");   
   fread(c,1,3,w);    
   printf("TAG2 identifier:%s\n",c);
   fread(&ver,1,2,w);    
   printf("TAG2 version:%d\n",ver);    
   fread(&flag,1,1,w);    
   printf("Flags:%d\n",flag);    
   fread(&size,1,4,w);  //????????    
   ..........
}

我知道每个字节大小的最高有效位都设置为 0,应该被忽略。
但是好像read()在读取大小的4个字节时,字节序是颠倒的。 如何以正确的字节顺序读取大小?

【问题讨论】:

  • 与其自己阅读标签,不如使用id3lib这样的现有库?

标签: c mp3 fread


【解决方案1】:

.mp3 文件格式规范应描述数字是先存储最低有效字节(AKA little endian)还是先存储最高有效字节(AKA big endian)。

利用这些知识,您应该能够使用运算符(*(或 this answer 中以类似的方式保存了 .wav 文件,使用的方法与此相反(使用 / 和 %)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2023-03-17
    • 2011-12-01
    • 1970-01-01
    相关资源
    最近更新 更多