双射"整数< - >字符串"功能

and*_*w.z 5 algorithm bijection

这是一个问题,我正在尝试为其创建最佳解决方案.我有一组有限的非负整数,范围为[0 ... N].我需要能够将此集合中的每个数字表示为字符串,并能够将此字符串向后转换为原始数字.所以这应该是一个双射函数.

其他要求是:

  1. 数字的字符串表示应该至少在某种程度上模糊原始数字.像f(x)= x.toString()这样的原始解决方案是行不通的.
  2. 字符串长度很重要:越少越好.
  3. 如果知道K的字符串表示,我希望猜测K + 1的字符串表示是非平凡的(在某种程度上).

对于p.1和p.2,显而易见的解决方案是使用类似Base64(或任何BaseXXX以适合所有值)的表示法.但是我们能否以最小的额外努力适应p.3?常识告诉我,我还需要一个双射"String < - > String"函数用于BaseXXX值.有什么建议?或者可能有比BaseXXX更好的东西来满足所有3个要求?

Cho*_*ett 0

那么您需要一个字符串来混淆原始数字,但允许在 str(K) 已知时确定 str(K+1) 吗?

干脆就干吧f(x) = (x + a).toString()a秘密在哪里?然后外部用户无法确定xf(x)但他们可以确信,如果他们有一个字符串“1234”,例如,对于未知数,x则“1235”映射到x+1