• 条形码校验码生成


    //判断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)

  • 相关阅读:
    三、oneinstack
    二、两条Linux删除数据跑路命令
    一、定时任务
    三、Docker网络
    C#数据结构
    四、字段大全
    【2019-06-14】同事的低迷
    【2019-06-13】同事的进步
    【2019-06-12】看书的好地方
    【2019-06-11】笔耕不辍
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/3143759.html
Copyright © 2020-2023  润新知