[Qt C++]对酷狗krc文件进行解码
来源:互联网 发布:linux 增加home空间 编辑:程序博客网 时间:2024/05/15 10:26
按照http://www.52pojie.cn/thread-286822-1-1.html 的方法,用楼主提供的E语言代码,改写了一个C++的。程序用到了Zlib库进行解码,请参看我上一篇文章。(http://blog.csdn.net/sunnysab/article/details/46672949)。 解码的方法很简单,所以代码也不长。首先读入文本,然后与Keys进行异或操作,再使用Zlib库进行解压缩。解压缩后的数据如图:
只是不知道每个字之前的标签代表的是什么意思。代码如下:
#include <QCoreApplication>#include <QFile>#include <QDebug>#include "zlib.h"const int Keys[] = {64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 105};typedef int CONVERT_CODE;#define CONVERT_SUCCESS 0x00#define CONVERT_FILE_EMPTY 0x01#define CONVERT_PARA_ERR 0x02#define CONVERT_FORMAT_ERR 0x03#define CONVERT_UNKNOWN 0x04/* * 函 数: KrcDecode * 功 能: 对KRC文件进行解码 * 参 数: QFile &KrcFile 要解码的krc文件 * QFile &LrcFile 解码后的lrc文件 * 返回值: 类型 CONVERT_CODE * 如果函数执行成功, 返回CONVERT_SUCCESS; */CONVERT_CODE KrcDecode(QFile &KrcFile, QFile &LrcFile){ CONVERT_CODE nRet = CONVERT_PARA_ERR; if (KrcFile.isOpen() != false && LrcFile.isOpen() != false) { QByteArray KrcData; QByteArray DecodeData; QByteArray LrcData; KrcFile.seek(0); KrcData = KrcFile.readAll(); if (false == KrcData.isEmpty()) { // 校验开头 4 字符是否为正确 if (KrcData.left(4) == "krc1") { KrcData.remove(0, 4); // 去除文件头标识 // XOR 大法解码 for (int i = 0; i < KrcData.size(); i++) { DecodeData.append((char)(KrcData[i] ^ Keys[i % 16])); } // 解压缩数据 if (ZlibUncompress(LrcData, DecodeData, NULL) != -1) { LrcFile.write(LrcData); nRet = CONVERT_SUCCESS; } else { nRet = CONVERT_FORMAT_ERR; } } else { nRet = CONVERT_FORMAT_ERR; } } else { nRet = CONVERT_FILE_EMPTY; } } return nRet;}
0 0
- [Qt C++]对酷狗krc文件进行解码
- 酷狗的krc歌词文件的解析
- 在线对word文件进行编码,解码
- krc歌词文件解析
- C对文件进行操作
- krc转lrc 酷狗加密歌词转换
- Qt中如何对文件进行读写
- 使用SOOT命令行对APK文件进行解码及包装
- 对字符串进行编码解码
- 对数据进行编码解码
- Qt加载磁盘文件和对文件内容进行过滤
- 浅谈歌词文件(LRC、QRC、KRC)
- c++,对txt文件进行读取显示
- Qt使用QuaZip对文件进行压缩解压操作
- Qt使用QuaZip对文件进行压缩解压操作
- 酷狗歌词Krc批量转换工具Lrc [附转换编码DLL]
- BASE64Decoder 对文件编码解码
- MVC中后台CS文件中对链接进行编码后在前台解码有误处理
- 2015年闰秒问题
- html div中怎么引入另一个html文件
- Android中对sd卡的读写权限问题
- [leetcode] Palindrome Number
- Highcharts后台取数据 并且绑定每块事件
- [Qt C++]对酷狗krc文件进行解码
- Intermediate Unity 3D for iOS: Part 1/3
- C语言学习笔记(七)——其他运算符
- LNMP环境搭建——MySQL篇
- jsp A标签中文excel文件下载报404,无法下载
- [leetcode][array] Summary Ranges
- Nginx 用log_format设置日志格式
- C语言学习笔记(八)——其他计算机知识
- Intermediate Unity 3D for iOS: Part 2/3