吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1088|回复: 35
收起左侧

[其他求助] 求一个软件可以批量生成 21位+1位校验码,可以导出。

[复制链接]
木子方 发表于 2023-2-25 22:17
25吾爱币
求一个软件可以批量生成 21位+1位校验码,可以导出。
例如:我想要一组数据,
613000199900000006001* - 613000199900000006500*
软件可以自动生成22位数据 ,* 是校验码,MOD-10,的规则。
生成后,可以批量导出。


新人初次发布,请大家监督,如有不对,麻烦管理删帖。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

a2523188267 发表于 2023-2-25 23:09
excel 用字符串 串接 22位编码随机?vba就可以灵活导出导入呀
homehome 发表于 2023-2-25 23:23
homehome 发表于 2023-2-25 23:26
 楼主| 木子方 发表于 2023-2-25 23:39
homehome 发表于 2023-2-25 23:26
可以在https://www.labelmx.com/这个官方网站下载单机版

找到这个了,收费 太贵啦。。。 试用的只能一次 10个。
平淡最真 发表于 2023-2-26 01:53
mod10是什么意思,你拿一个数字计算一下,给一下公式
homehome 发表于 2023-2-26 07:56
木子方 发表于 2023-2-25 23:39
找到这个了,收费 太贵啦。。。 试用的只能一次 10个。

竟然还有这样的事,一会看看能不能“免费”用
homehome 发表于 2023-2-26 13:51
找了一点资料,用python生出来了,运行目录下将产生一个a.txt的文件。看看符不符合你的意思
----------------------------------------------
# 求Pn
def getPn(n, arr1):
    if n == 1:
        return 10
    else:
        return mod10(getSn(n - 1, arr1)) * 2

# 求特定的取余10的结果
def mod10(num):
    if num % 10 == 0:
        return 10
    else:
        return num % 10

# 求Sn
def getSn(n, arr1):
    return getPn(n, arr1) % 11 + int(arr1[14-n+1])

# 求校验码
def getCheckCode(code):
    c = code + 'x,'
    arr1 = []
    for i in reversed(c):
        arr1.append(i)
    for j in range(0, 10):
        arr1[1] = str(j)
        if getSn(14, arr1) % 10 == 1:
            result = ''.join(list(reversed(arr1)))
            return result[:len(result) - 1]

if __name__ == '__main__':
    # 读取输入的数字范围
    start = int(input("请输入起始数字:"))
    end = int(input("请输入结束数字:"))
    with open('a.txt', 'w') as f:
        for i in range(start, end+1):
         xkzCode = str(i)
         f.write(getCheckCode(xkzCode) + '\n')
homehome 发表于 2023-2-26 14:00
修改一下,原来是14位的数字,现在改为21位
# 求Pn
def getPn(n, arr1):
    if n == 1:
        return 10
    else:
        return mod10(getSn(n - 1, arr1)) * 2

# 求特定的取余10的结果
def mod10(num):
    if num % 10 == 0:
        return 10
    else:
        return num % 10

# 求Sn
def getSn(n, arr1):
    return getPn(n, arr1) % 11 + int(arr1[21-n+1])

# 求校验码
def getCheckCode(code):
    c = code + 'x,'
    arr1 = []
    for i in reversed(c):
        arr1.append(i)
    for j in range(0, 10):
        arr1[1] = str(j)
        if getSn(21, arr1) % 10 == 1:
            result = ''.join(list(reversed(arr1)))
            return result[:len(result) - 1]

if __name__ == '__main__':
    # 读取输入的数字范围
    start = int(input("请输入起始数字:"))
    end = int(input("请输入结束数字:"))
    with open('a.txt', 'w') as f:
        for i in range(start, end+1):
         xkzCode = str(i)
         f.write(getCheckCode(xkzCode) + '\n')
homehome 发表于 2023-2-26 14:10
和那个软件对比了一下,发现输出结果不相同,得研究一下原理了,抄别人的还是不好

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
木子方 + 1 + 1 热心回复! 感谢您 的回复,但未解决问题。 我找了个大大处理了,谢谢您

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 03:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表