我在一个项目中使用C#语言。我需要向用户提供大(9+数字)数字,他们将不得不重新输入到另一个系统(为以后的数据相关性)。让用户输入一个没有错误的大数字(手工)几乎是不可能的。
我一直在尝试用base64来缩短这个数字,但是我找到的所有代码都将创建一个字符和数字的字符串组合。有一个简单的数学算法,我可以用以使一个大的数字更小吗?结果应该是数字,而不是alpha数字。
发布于 2016-12-04 12:03:48
您以错误的方式解决了这个问题,而不是改变数字大小,而是为用户建立一种方便的方式来复制该数字,一个简单的键事件会将该数字复制到缓冲区,然后用户将不必将该数字写下来。
发布于 2016-12-04 12:10:27
只使用数字来减少一个数字是行不通的。
您真正需要的是某种形式的错误检查。其中一个非常好的工作是Verhoeff算法,它将检测几乎每一个错误。有许多例子可以在网上找到。
喜欢:https://www.codeproject.com/articles/15939/verhoeff-check-digit-in-c
发布于 2016-12-15 03:51:18
您可以使用哈希算法散列您的大数字,但您需要处理哈希冲突。其中一个非常容易实现的是校验和sum16:functions。
请参见sum16,您只能拥有0-65536。想想sum18?
https://stackoverflow.com/questions/40958327
复制相似问题