按a~z,aa~az,ba~bz…za…zz…aaa…aaz,aba~abz…这样的方法进行编号之类问题

2013年8月29日 由 Creater 留言 »

文件按a~z,aa~az,ba~bz…za…zz…aaa…aaz,aba~abz…这样的方法进行编号。给定任意一个编号,输出文件是第几个文件。
把这些字符串当做26进制数即可:
a–>1
z–>26;
aa–>27
需要做的工作即是进行26进制到10进制的转换。

#include <iostream>
#include <math.h>
using namespace std;

int charToNum(char ch)
{
	return ch - 96;
}
int anyBinaryToDecimal(string num,int binary)
{
	int len = num.size();
	int decimal_num = 0;
	for(int i = 0;i < len; i++)
	{
		decimal_num+=static_cast<int>(charToNum(num[i]) * pow(static_cast<float>(binary),(int)(len - i - 1)));
	}
	return decimal_num;
}

int main()
{
	cout<<anyBinaryToDecimal("aa",26)<<endl;
	system("pause");
}
广告位

发表评论

你必须 登陆 方可发表评论.