23

如何将两个 32 位整数 ( int) 转换为一个 64 位long,反之亦然?

4

2 回答 2

48
long c = (long)a << 32 | b & 0xFFFFFFFFL;
int aBack = (int)(c >> 32);
int bBack = (int)c;

在 Java 中,您不需要那么多括号,也不需要对反向计算进行任何屏蔽。

于 2012-06-26T20:33:23.007 回答
2

整数到多头:

long c = ((long)a << 32) | ((long)b & 0xFFFFFFFFL);

我将把它作为练习留给读者执行反向计算。但提示是;使用更多位移位和位掩码

(根据 T. Murdock 的评论编辑)

于 2012-05-21T13:28:56.410 回答