雪花:“左移”使结果超过long.max值

时间:2018-03-02 08:25:05

标签: id-generation snowflake

((timestamp - 1288834974657)<< 32)

我包含了一些更多的比特信息,例如,在时间戳信息需要之后总共32比特,然后时间戳需要左移32比特,使得结果超过long.max值。结果显示负值如-7187691577906700288,这是错误的。

希望我正确地描述了我的问题。请帮忙......

1 个答案:

答案 0 :(得分:1)

我不清楚雪花(我认为它是一种语言?)我也不知道时间戳的格式。如果1288834974657为unix时间戳,则为42811年。

问题是此特定时间戳大于32位。由于你将它移动到另一个32位,你的号码就会溢出。看起来您的语言中的long可能是无符号的,这意味着最大数量可能是2 ^ 63-1。如果long未签名,则最大数量可能为2 ^ 64-1。