经过多天的研究,结合网上一大牛写的C#程序,用Vc++编写一个自己的酷狗歌词转换工具。
程序可以很方便地将酷狗的Krc文件转换为Mp3等播放器用的Lrc文件。
最重要的是,我已经将解码的函数封装在DLL中,出于方便他人使用的原则,内部函数所有的操作都是在内存中进行,通过它,你可以很方便、灵活地地构建自己的解码程序。
1、应用程序篇
界面说明:
下载地址:http://pan.baidu.com/share/link?shareid=506529402&uk=3892350300
2、DLL篇
封装后的DLL公开了以下三个函数,每个函数都有具体的说明,本文程序就是由此DLL编写后打包成为一个exe而成的,可放心使用。(仅用于研究和学习)
/* * 此函数将UTF8数据转换为ANSI数据 * PCHAR& pBuf 指向输入缓冲区,编码转换后会重写此区域 * int iLen 输入缓冲区有效数据长度 * 返回值 转换后的编码在pBuf中的大小 */ int Utf8ToAnsi(PCHAR& pBuf,int iLen); /* * 此函数将加密的Krc数据转换为解密的Krc数据(ANSI编码的) * PCHAR pBufKrc 指向原始文件在内存中的地址(即先要加载到内存中) * long iLenKrc 内存中的长度 * PCHAR& pBufOut 输出缓冲区的指针 * long& iLenOut 输出缓冲区的长度,转换成功后的值为实际转换后的长度 */ void KrcDecodeAnsi(PCHAR& pBufKrc,long iLenKrc,PCHAR& pBufOut,long& iLenOut); /* * 此函数用于将解码后的Krc文件内容整理为Lrc所需要的格式 * PCHAR& pAnsi Ansi编码的Krc内容 * long iLenAnsi 有效长度 * PCHAR& pBufOut Lrc的输出缓存区 * long& iBufLen 输出数据的长度 */ void KrcMakeLrc(PCHAR& pAnsi,long iLenAnsi,PCHAR& pBufOut,long& iBufLen);
DLL下载地址:http://pan.baidu.com/share/link?shareid=706126617&uk=3892350300
3、使用范例:
FILE* pf = fopen(pFilepath,"rb"); if (pf==NULL) { AfxMessageBox("指定文件不存在"); return; } long iSize = 0; fseek(pf,0,SEEK_END); iSize = ftell(pf); fseek(pf,0,SEEK_SET); PCHAR pBufOld = new CHAR[iSize]; fread(pBufOld,1,iSize,pf); //DLL 处理 KrcDecodeAnsi(pBufOld,iSize,pBuf,iLen); //得到Krc解密后数据 unsigned long iLenLrc = 10*1024; PCHAR pBufLrc = new CHAR[iLenLrc]; KrcMakeLrc(pBufOld,iSize,pBufLrc,iLenLrc); //将处理后的数据pBufLrc写到文件中,其有效数据长度为iLenLrc delete[] pBufOld; fclose(pf);谢谢翻看。
2013年8月11日2:05:20 BBDXF
作者:bbdxf 发表于2013-8-11 2:06:51 原文链接
阅读:30 评论:0 查看评论