用不同的 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
将解决问题。
这是想出来的
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
将解决问题。