求一个10位userid生成算法

输入:短ID (i.e. 1-1000000)
输出:定长的10位数ID

要求:
1.短ID与长ID不要是线性关系,就是不能完全成正比或者完全成反比
2.如果用到二进制操作,考虑64位的系统
3.短ID必须对应到不同的长ID

阅读 8.1k
1 个回答

加一个掩码即可

直接使用uint64_t类型表示长ID,设计一个uint64_t的掩码,和短ID做XOR运算,不一定是低位对齐XOR,也可以放在中间两个字节。
长ID是定长的十进制10位,那就把对应的二进制最大最小值算出来,用于设计掩码,即可解决。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进