标题:【共享】发一段自动生成身份证号码的函数
作者:XChinux
日期:2005-12-17 22:15
内容:
参数中strRegionCode则是身份证的前六位地区号码,需要用户自己添加。
QString GenPID(QString strRegionCode)
{
time_t t;
srand((unsigned)time(&t));
int Year = rand()/(RAND_MAX * 1.0) * 85 + 5;
int Month = rand()/(RAND_MAX * 1.0) * 11 + 1;
int Date = rand()/(RAND_MAX * 1.0) * 27 + 1;
int Num = rand()/(RAND_MAX * 1.0) * 998 + 1;
char newNumber[19];
sprintf(newNumber, "%6s19%02d%02d%02d%03d", strRegionCode.toStdString().c_str(), Year, Month, Date, Num);
int ai[17];
const int wi[18] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
const char map[] = {'1','0','X','9','8','7','6','5','4','3','2'};
int sum = 0;
for(int i = 0; i < 17; i ++)
{
ai = newNumber - 48;
sum += ai * wi;
}
newNumber[17] = map;
newNumber[18] = '\0';
return QString::fromAscii(newNumber);
}