-1

我们有 32 位全局 ID 字符串用于识别我们系统中的对象和移动 ID 字符串,用于唯一识别我们的手机客户端。目前,移动 id 是一个手机号码,但它可能被生成为任何东西。

为了节省网络流量,我们可以将这两个字符串组合成另一个更小的字符串,我们称之为本地 id,并将该 id 而不是全局 id 传输到手机。当手机将本地 id 传回给我们时,我们将本地 id 转换回全局 id 并进行处理。本地 id 对于手机必须是唯一的,但不是全局唯一的。mobile id 已经在客户端和服务器之间共享,因此无需传输它。

我们的第一个想法是在服务器上有一组巨大的表,每个表都将全局 id 映射到给定移动 id 的本地 id。但是,如果存在一个简单的算法,我们可以做到

algorithm(mobileid, globalid) = localid     -----> server sends localid to client

client sends localid back to server

algorithm(mobileid, localid) = globalid

这甚至可能吗?如果是这样,最好的开始方式是什么?谢谢,麻烦您了。

4

1 回答 1

0

您需要一个本地 ID,例如:

  • 您可以从中解码 Global Id
  • 您可以从中解码Mobile ID

所以最简单的方法是查找表,但你已经说过你不想要那个。

您需要的不是哈希算法,而是压缩算法,因为您想再次提取相同的数据。由于您没有太多数据(32 位 + 电话号码),我认为传统的压缩算法不适合您。

引起我注意的是当你说 32-bit strings时,如果你有一个 32 位数字的字符串表示,你需要 10 个字符(最大无符号整数 = 4294967295),但实际上你只需要 4 个字节。和电话号码一样。如果由于您的协议,您需要将数字存储为 ascii 字符串,则可以使用 base64 编码。

于 2012-06-29T18:40:03.760 回答