((timestamp - 1288834974657)<< 32)
我包含了一些更多的比特信息,例如,在时间戳信息需要之后总共32比特,然后时间戳需要左移32比特,使得结果超过long.max值。结果显示负值如-7187691577906700288,这是错误的。
希望我正确地描述了我的问题。请帮忙......
答案 0 :(得分:1)
我不清楚雪花(我认为它是一种语言?)我也不知道时间戳的格式。如果1288834974657为unix时间戳,则为42811年。
问题是此特定时间戳大于32位。由于你将它移动到另一个32位,你的号码就会溢出。看起来您的语言中的long
可能是无符号的,这意味着最大数量可能是2 ^ 63-1。如果long
未签名,则最大数量可能为2 ^ 64-1。