您的位置:首页 > 其它

酷狗歌词Krc批量转换工具Lrc [附转换编码DLL]

2013-08-11 02:06 926 查看
经过多天的研究,结合网上一大牛写的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: