问题标签 [check-digit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2055 浏览

sql - USPS ACS Keyline 校验位

我已经根据他们文档中的方法为美国邮政服务地址更改服务 Keyline 使用 SQL 实现了“MOD 10”校验位算法,但似乎我得到了错误的数字!我们的输入字符串中只有数字,使计算更容易一些。当我将我的结果与他们的测试应用程序的结果进行比较时,我得到了不同的数字。我不明白这是怎么回事?有人看到我的算法有什么问题吗?这一定是显而易见的……

该方法的文档可以在本文档的第 12-13 页找到: http ://www.usps.com/cpim/ftp/pubs/pub8a.pdf

示例应用程序可在以下位置找到: http ://ribbs.usps.gov/acs/documents/tech_guides/KEYLINE.EXE

请注意:我根据论坛用户的帮助修复了以下代码。这样未来的读者将能够完整地使用代码。

0 投票
3 回答
7491 浏览

regex - 带正则表达式的 mod 11 校验位

是否可以使用正则表达式语句创建 mod 11 校验位例程?

数字是一个 10 位数字,

步骤1:A =(2号*2)+(3号*4)+(4号*8)+(5号*5)+(6号*10)+(7号*9)+(8号) * 7) + (第 9 个数字 * 3))

第 2 步:B = A / 11(忽略余数)

第 3 步:C = B * 11

第 4 步:D = A - C

第 5 步:11 - D 必须 = 第 10 位

0 投票
7 回答
16286 浏览

php - 生成 Luhn 校验和

验证 Luhn 校验和的实现有很多,但生成它们的实现却很少。我遇到过这个,但是在我的测试中发现它有问题,我不理解 delta 变量背后的逻辑。

我已经制作了这个应该生成 Luhn 校验和的函数,但由于某种原因,我还没有理解生成的校验和在一半的时间里是无效的。

一些例子:

我正在针对此页面验证生成的校验和,我在这里做错了什么?


为了将来参考,这里是工作功能。

我删除了 $parity 变量,因为我们不需要它来实现这个目的,并验证:

0 投票
2 回答
1116 浏览

algorithm - Verhoeff 算法的正确置换循环

我正在为校验位方案实现 Verhoeff 算法,但网络资源中似乎存在一些关于哪个排列循环应该构成排列表的基础的分歧。

维基百科使用:(36)(01589427)

显然,Numerical Recipies 使用不同的循环,本书使用:(0)(14)(23)(56789),引自 Winters 1990 年的一篇文章。它还指出 Verhoeff 使用了维基百科的引用。

现在,我的数论有点生疏了,但是维基百科的循环显然会在 8 次方之后重复,而一本书需要 10,尽管它说 s^8=s。表 2.14(b) 在 2 个周期中还有其他错误,所以无论如何这都是可疑的。

不幸的是,我没有原始文章的副本(而且我太紧张了,无法支付/厌恶出版商仍然要索取 40 年的知识),也没有要检查的数字食谱副本(并且我不愿意安装他们的妄想症引起的复制保护插件以在线查看)。

那么有人知道哪个是正确的吗?他们都正确吗?

0 投票
3 回答
1766 浏览

optimization - 在 R 中优化 Verhoeff 算法

我编写了以下函数来计算 R 中的校验位。

为了在字符串向量上运行,sapply必须使用。这部分是因为使用了strsplit,它返回一个向量列表。即使对于中等大小的输入,这也会影响性能。

这个函数如何向量化?

我也知道必须在每次迭代中创建表会损失一些性能。将这些存储在新环境中会是更好的解决方案吗?

0 投票
1 回答
3991 浏览

algorithm - 校验位算法 Luhn mod N vs 简单总和

你知道为什么Luhn mod N 算法为了创建校验位通过将每个偶数放置的字符的值加倍而不是对所有字符进行简单的求和来执行求和吗?

在伪代码词中:

给定:

你知道为什么 Luhn mod N 基本上是这样做的:

而不是简单地做一个总和

他们仍然可以mod通过使校验位适合一个字符的操作来终止


作为这个问题的旁注,谁可能对 Luhn 算法的图形表示感兴趣,这使得它更容易理解:

在此处输入图像描述

其实这个是最原始的 Luhn 算法,甚至不需要使用 MOD 函数。

0 投票
3 回答
10144 浏览

java - 用于读取机读区旅行证件(护照)代码的 Java 或 C++ API

我正在寻找 java 或 c++ 中的 API 来读取 MRZ 并解码旅行证件(护照)中的 MRZ 代码。

有关机读区的更多信息,请访问 http://www.highprogrammer.com/alan/numbers/mrp.html。以前有人用 API 做过吗?

0 投票
1 回答
11271 浏览

c# - 在c#中获取校验位(Mod 11)实现

谁能给我 C# 中的代码...用 Mod11 获取验证码?

谢谢。

例子:

结果:0365327

0 投票
2 回答
2409 浏览

ruby - 在 Ruby 中如何进行校验位计算?

我正在尝试在 Ruby 中为 FedEx 跟踪号码构建校验位计算。

以下是校验位计算的信息和步骤:

  • 数字位置从右到左标记。
  • 数字 1 是校验字符。
  • 不使用数字 16 到 22。

脚步:

  1. 从位置 2 开始,将偶数位置的值相加
  2. 将步骤的结果乘以 3。
  3. 从位置 3 开始,将奇数位置的值相加。请记住 - 位置 1 是您要计算的校验位。
  4. 将步骤二的结果与步骤三的结果相加。
  5. 确定与第四步中的数字相加时得到 10 倍数的最小数字。这是校验位。

以下是流程示例(由 FedEx 提供): 在此处输入图像描述

那么,我如何在 Ruby 中实现它呢?

0 投票
1 回答
3019 浏览

algorithm - 逆向工程校验位算法

我正在尝试对用于生成校验位的算法进行逆向工程。

数字长 8 位,最后一位是校验位。我有数千个有效数字来测试它。

我尝试了标准的 Luhn、Verhoeff 和 modulo-10 算法(对所有可能的权重进行强力检查),但找不到答案!

可以计算这个吗?有任何想法吗?

以下是一些有效数字的示例:

编辑:谢谢大家 - 不幸的是,我无法访问代码。该号码是税号,我需要能够验证该号码是否输入正确。根据我的研究,大多数国家/地区似乎都使用非常标准的模 10 类型系统。我可以访问大约 60 000 个号码。

我知道这个问题可能无法解决,更多的是学术问题。