2012-09-11 17 views
0

我編寫了一個c程序來讀取MP3文件並打印TAG2字段。源代碼是:在c程序中讀取mp3文件的TAG

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個字節時,似乎顛倒了字節順序。 如何以正確的字節順序讀取大小?

+1

爲什麼不使用像[id3lib](http://id3lib.sourceforge.net/)這樣的現有庫,而不是自己閱讀標籤? –

回答

0

.mp3文件格式規範應該描述數字是先存儲最低有效字節(又稱小尾數)還是最高有效字節首先存儲(又稱大尾數)。

使用這些知識,您應該能夠使用運算符(*(或< <),+(或|))和適當的投射的組合來從單個字節重建多字節整數。我在this answer中以類似的方式保存了.wav文件,使用方法的反向(使用/和%)。