QRCode二维条码开发(计算版本信息)_2011.06.01
2011-06-01 10:27
169 查看
//函数功能:根据不同的版本,计算18位的版本信息:BCH(18,6) //参数说明: //strVersionNum -- 版本号(只有版本7-40才有版本信息,其它版本没有版本信息) //返回值:strVersionInformation -- 数据码字 CString CQRCodeDlg::CalculateVersionInformation(CString strVersionNum) { CString strVersionInformation; CString strDataInfo;/*数据信息*/ CString strGeneratorInfo = "000001111100100101";/*生成多项式信息*/ CString strDataBuffer; int nVersionNum;/*版本号*/ int nFlag1; int nFlag2; int nGeneratorInfo = 0; int nDataBuffer = 0; char buffer[6]; nVersionNum = atoi(strVersionNum); if (nVersionNum >= 7) { _itoa(nVersionNum,buffer,2); strDataInfo.Format("%06s",buffer); strDataBuffer = strDataInfo + "000000000000"; do { for(int i=17;i>=0;i--) { if (strGeneratorInfo[i] == '1') nFlag1 = i;/*除数,根据差值进行移位*/ if (strDataBuffer[i] == '1') nFlag2 = i;/*被除数*/ } /*nFlag1>nFlag2,则需进行移位,然后进行位运算操作,同者为0,不同为1*/ if(nFlag1 >= nFlag2) { nDataBuffer = strtol(strDataBuffer,NULL,2);/*字符串二进制转换为十进制*/ nGeneratorInfo = strtol(strGeneratorInfo,NULL,2)<<(nFlag1 - nFlag2);/*通过移位做除法*/ _itoa(nDataBuffer^nGeneratorInfo,buffer,2); strDataBuffer.Format("%018s",buffer); for(int i=17;i>=0;i--) { if (strGeneratorInfo[i] == '1') nFlag1 = i;/*除数,根据差值进行移位*/ if (strDataBuffer[i] == '1') nFlag2 = i;/*被除数*/ } } } while (nFlag1 >= nFlag2);/*注意:当二者相等时,进行最后一次计算*/ strVersionInformation = strDataInfo + strDataBuffer.Right(12); return strVersionInformation; } }
经测试,此算法是正确的!34个版本的信息我都亲自生成过一遍,完全正确!
相关文章推荐
- QRCode二维条码开发(计算格式信息)_2011.05.25
- ios6.0以前版本开发 异常信息:reason: ‘Could not instantiate class named NSLayoutConstraint’
- Qt软件开发文档16---软件更新:写入程序版本信息并读取程序的版本号
- LTE系统信息(4)-DCI1C和RV冗余版本计算
- 开发RCP时如何去掉NetBeans Platform的版本信息
- [置顶] Android开发之获取APP的应用程序名称以及版本名称信息java工具类
- ios6.0以前版本开发 异常信息:reason: ‘Could not instantiate class named NSLayoutConstraint’
- Android 常用开发工具类之 AppVersionUtil (获取应用版本信息工具)
- IAR开发STM8,如何加入每次编译的日期时间信息来做为版本信息
- 为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。 写出问题定义并分析系统的可行性。
- Qt软件开发文档16---软件更新:写入程序版本信息并读取程序的版本号
- QRCode二维条码开发_2011.05.23
- [iOS开发]使用Swift检测系统版本信息
- QRCode二维条码开发(代码)_2011.05.24
- IAR开发STM8,如何加入每次编译的日期时间信息来做为版本信息
- iOS开发获取设备唯一标识、系统版本、应用版本等信息
- vs2008 开发程序增加版本信息
- ios6.0以前版本开发 异常信息:reason: ‘Could not instantiate class named NSLayoutConstraint’
- 收集Linux从酝酿到开发初始版本有关的所有资料和信息(1991-1995);
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 服务器之间的接口通讯功、信息交换