将字符串压缩为唯一 ID



我有一个游戏,用户可以在其中创建自定义关卡。我目前正在生成一些对关卡进行编码的 JSON,但我想要一种让用户彼此共享关卡的简单方法(最好是低于 10 个字符的 ID(。没有互联网连接,因此关卡的所有信息都必须编码到此ID中,以便游戏可以对其进行解码并生成关卡。

我已经尝试了不同类型的加密和压缩算法,但我似乎无法将其达到合理的可共享长度。哈希不起作用,因为我需要对其进行散列,并且需要非常低的 (0( 冲突,因为它必须对特定的生成级别进行编码。

有没有更好的方法可以解决这个问题?我意识到我正在尝试将数据塞入 10 个字符,但如果我使用 91 个不同字符的填充,这应该给我 6,426,898,010,533 个不同的可能级别 ID。

我的用户是否被长 ID 诅咒,或者是否有更好的方法将(最好是 JSON 数据(压缩为短字符串?JSON 数据随着级别大小的增加而变大。我不太关心安全性。如果有人确实弄清楚如何解码它,他们只会得到一些无用的JSON。

我已经尝试了不同类型的加密和压缩算法,但我似乎无法将其达到合理的可共享长度。哈希不起作用,因为我需要对其进行散列,并且需要非常低的 (0( 冲突,因为它必须对特定的生成级别进行编码。

恕我直言,这一切都与信息量和数据"可压缩性"有关。使用一些文本格式(JSON,..(只会炸毁它。也许你可以编码(base64?(一些有效的二进制表示(+哈希/校验和来检查数据完整性(。

不管整个级别描述可能很大,只是为了打字。当具有高熵并且没有可重复的模式时,即使压缩也无济于事。

也许您可以使用不同的传输方式,例如移动蓝牙(红外线今天并不常见(或计算机串行。

最新更新