将数字从一个数字映射到另一个数字的代码,其中每个数字的距离大于 1

Code that maps numbers from one number to another with where each number has a distance greater than 1

我需要用唯一 ID 标记大量书籍。因为人为错误确实会扰乱系统,所以我需要代码来检测其中一个数字是否错误。这意味着代码的任何两个元素都不能具有 1 的汉明距离。或者有奇偶校验方法或类似的东西,以便可以检测到一些错误。我通常会 post 我到目前为止所做的,但我真的不知道从哪里开始。

谢谢

如果您要处理人类可读的数据,我会选择 Luhn algorithm 之类的东西。这是为简单的手动计算以及生成十进制编码数据而设计的。

二进制代码的问题是它们会对数据进行一些扰乱。因此,除非您计划在图像中对您的 ID 进行编码,例如条形码或 QR,否则这可能不是正确的选择。另外,最佳解码器是复杂的算法,通过手工计算肯定是不切实际的。

如果您坚持使用二进制代码,那么您必须决定要检测多少位错误。您需要至少 2 的汉明距离才能检测到错误,否则一位翻转将导致代码被转换为另一个同样有效的代码,并且错误将被忽视。如果你想纠正 N个错误,那么你需要选择距离为2N+1的代码。

如果您打算对十六进制数字进行编码,那么您将需要每个数字存储 4 位,这将需要每条消息具有 9 位冗余的代码,以更正单个数字错误。我什至不确定是否存在这样完美的代码,实际上您可能会发现您需要更多的冗余来平等地保护所有位。