zoukankan      html  css  js  c++  java
  • 条形码校验码生成

    //判断25码的校验位是否正确
    //
    /*
    交叉25码校验位的计算规则。
    交叉25码的校验位计算方法是 Mod 10 :

    1、字符个数为偶数时为:10的倍数-[奇数位的数字之和(从左至右)+(偶数位数字之和)*3个位数]
    2、字符个数为奇数时为:10的倍数-[偶数位的数字之和(从左至右)+(奇数位数字之和)*3个位数]
    如:

    514362的校验位为10*X-[(5+4+6)+3*(1+3+2)]=7(因加校验位后个数为奇数,故前面加0后为05143627。

    76534的校验位为10*X-[(6+3)+3*(7+5+4)]=3
    */

    //string ls_checkcode
    //ls_checkcode = right(astr_code,1)

    string ls_basecode
    //ls_basecode = left(astr_code,len(astr_code) - 1)
    ls_basecode = astr_code

    //奇数,偶数位和
    int oddsum,evensum,i
    oddsum = 0
    evensum = 0
    for i =1 to len(ls_basecode)
    if mod(i,2) = 1 then
    oddsum = oddsum + integer(mid(ls_basecode,i,1))
    else
    evensum = evensum + integer(mid(ls_basecode,i,1))
    end if
    next
    //根据位数选择判断方法
    //1、字符个数为偶数时为:10的倍数-[奇数位的数字之和(从左至右)+(偶数位数字之和)*3个位数]
    //2、字符个数为奇数时为:10的倍数-[偶数位的数字之和(从左至右)+(奇数位数字之和)*3个位数]
    int isum
    if mod(len(ls_basecode),2) = 1 then
    //个数为奇数
    isum = evensum + oddsum * 3
    else
    //个数为偶数
    isum = evensum * 3 + oddsum
    end if
    //校验位 = isum个数位与10取补
    int icheck
    icheck = 10 - mod(isum,10)
    //10的补为0
    if icheck = 10 then
    icheck = 0
    end if
    /*
    if ls_checkcode = string(icheck) then
    return true
    else
    return false
    end if
    */
    return string(icheck)

  • 相关阅读:
    关于Tomcat的那些事儿(一)
    关于Spring的问题(一)
    关于Spring的@RequestBody的使用
    关于Eclipse切换所有分支
    关于使用BetterIntelliJ激活IntelliJ IDEA
    关于Elasticsearch的问题(一)
    关于Elasticsearch那些事
    关于LRU算法及Java实现
    自定义滚动条
    创建型模式之建造者模式
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/3143759.html
Copyright © 2011-2022 走看看