• 7696阅读
  • 0回复

【共享】发一段自动生成身份证号码的函数 [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2005-12-17
参数中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[i] = newNumber[i] - 48;
    sum += ai[i] * wi[i];
  }

  newNumber[17] = map[sum%11];
  newNumber[18] = '\0';
    return QString::fromAscii(newNumber);
}
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个