admin管理员组文章数量:1538096
经过多天的研究,结合网上一大牛写的C#程序,用Vc++编写一个自己的酷狗歌词转换工具。
程序可以很方便地将酷狗的Krc文件转换为Mp3等播放器用的Lrc文件。
最重要的是,我已经将解码的函数封装在DLL中,出于方便他人使用的原则,内部函数所有的操作都是在内存中进行,通过它,你可以很方便、灵活地地构建自己的解码程序。
1、应用程序篇
界面说明:
下载地址:http://pan.baidu/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/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
版权声明:本文标题:酷狗歌词Krc批量转换工具Lrc [附转换编码DLL] 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1726968433a1092481.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论