V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
skywalkboy
V2EX  ›  问与答

Java 如何生成 18 位的唯一 id

  •  
  •   skywalkboy · 2017-06-07 12:00:32 +08:00 · 4715 次点击
    这是一个创建于 2730 天前的主题,其中的信息可能已经有所发展或是发生改变。

    支付宝上领取的优惠券扫码使用的时候可以生成 18 位的数字 id,之前了解的都是 64 位的 id 或者 Guid/UUiD,请问这类 18 的 Id 如何生成

    9 条回复    2017-06-07 18:55:30 +08:00
    ihuotui
        1
    ihuotui  
       2017-06-07 12:18:00 +08:00 via iPhone
    参考微信消息 id
    skywalkboy
        2
    skywalkboy  
    OP
       2017-06-07 13:22:36 +08:00
    @ihuotui 微信消息的是 16 位的数字吧,请教这个如何生成
    leejanfin
        3
    leejanfin  
       2017-06-07 14:06:23 +08:00 via iPhone
    先生成 uuid 然后设计一个算法转成 16 位的数字 ID ?
    skywalkboy
        4
    skywalkboy  
    OP
       2017-06-07 17:26:01 +08:00
    @leejanfin 这个可以直接生成 16 位吧,不需要再通过 uuid
    honeycomb
        5
    honeycomb  
       2017-06-07 17:41:33 +08:00 via Android
    可以看一下 UUID 的内部实现,JRE 的实现就是新建了一个 securerandom,导出 16 个字节,再把 UUID 格式 4 规定的 4 个比特替换成定值。

    可以用类似的方法生成 18 位唯一 id
    honeycomb
        6
    honeycomb  
       2017-06-07 17:42:39 +08:00 via Android
    java.util.UUID.randomUUID()
    ihuotui
        7
    ihuotui  
       2017-06-07 18:34:26 +08:00 via iPhone
    @skywalkboy 参考思路啊,具体要什么自己变啊
    yuhuan66666
        8
    yuhuan66666  
       2017-06-07 18:54:33 +08:00 via Android
    @honeycomb 生产中发现有时候又很高几率重复。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3841 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:30 · PVG 18:30 · LAX 02:30 · JFK 05:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.