首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

读取MP3歌曲信息时遇到了有关问题

2013-04-20 
读取MP3歌曲信息时遇到了问题最近在做一个音乐播放器,想获取MP3文件的一些信息,诸如歌手,专辑之类的。但是

读取MP3歌曲信息时遇到了问题
最近在做一个音乐播放器,想获取MP3文件的一些信息,诸如歌手,专辑之类的。
但是在编写这个函数的时候遇到了一些小问题,无奈求解。


void fGetMusicInfo(HWND hwnd)
{
HANDLE hFile;
int iFileLength;
PBYTE pBuffer;
DWORD dwBytesRead;
int iCmpResult;
TCHAR szTag[]=TEXT("ID3");

if (INVALID_HANDLE_VALUE==(hFile=CreateFile(TEXT("E://Summer.mp3"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL)))
{
return;
}

iFileLength=GetFileSize(hFile,NULL);
pBuffer=malloc(iFileLength+2);

ReadFile(hFile,pBuffer,iFileLength,&dwBytesRead,NULL);
CloseHandle(hFile);

pBuffer[3]='\0';
//#ifdef UNICODE
//pBuffer[6]='\0';
//pBuffer[7]='\0';
//#else
//pBuffer[3]='\0';
//#endif

iCmpResult=CompareString(LOCALE_USER_DEFAULT,NORM_IGNOREWIDTH,pBuffer,_countof(pBuffer),szTag,_countof(szTag));
if (CSTR_EQUAL==iCmpResult)
{
//MessageBox(NULL,TEXT(""),NULL,MB_OK);
}

}


1、调试我发现pBuffer指向的开头三个字符也是ID3,为什么和szTag比较后结果是不相等呢?
2、UNICODE一个字符两个字节,那为什么pBuffer[0]这一个字节就可以放I这个字符呢?

求解,不胜感激!
[解决办法]
具体的解析还是参考ID3的SPEC规范来吧,这样可以较好的解析各种信息。参考地址:
http://id3.org/Developer%20Information

热点排行