用不同的 4 字节数替换 Long 数中的最后 4 个字节

Replacing last 4 bytes in Long number with different 4 bytes number

这是想出来的

long longTime64Bits = 1509412598194L;
int  intTime32Bits = 63673;

longTime64Bits &= ~0xFFFFFFFF; // this should set last 32 bits to zero

long new64bitTime = longTime64Bits |= intTime32Bits; // new number with replaced 32 bits

我不确定哪里出了问题,但 longTime64Bits(第 3 行)新值总是以零出现。

产生错误结果的原因是 0xFFFFFFFF 一个 int 常量。因此,~0xFFFFFFFF也是一个int,等于0。

将常量更改为 0xFFFFFFFF00000000L 或使用 ~0xFFFFFFFFL 将解决问题。