您的位置:首页 > 编程语言 > Qt开发

Location解密修正版

2014-10-25 07:59 597 查看
上一版本的解密算法有些问题,在某些情况下对不齐,容易解密失败。调试了一天的新算法,贴上来保存。也能帮助后来人:

QString Dialog::DecodeXiamiLocation(QString location)
{//解码虾米音乐凯撒矩阵算法
if(!(location.data()[0].isDigit()))
return "ERROR";
int num=location.data()[0].digitValue();
QString loc=location.mid(1,location.length()-1);
int avg_len=loc.length()/num;
int remainder=loc.length()%num;
for(int i=0;i<num-remainder;i++)
loc.insert((remainder*(avg_len+1)+avg_len*(i+1))+i,'~');
int lineLen=loc.length()/num;
QString ret;
for(int j=0;j<lineLen;j++)
for(int i=0;i<num;i++)
ret.append(loc.at(i*lineLen+j));
ret=QUrl::fromPercentEncoding(ret.remove('~').toLocal8Bit()).replace('^','0');
return ret;
}

目前的半成品下载器预览图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt5 音乐