我有一种感觉,这是一个相当微不足道的问题,但我很难过.在我的应用程序中,我正在使用一对整数在查找表中键入内容.我认为将两个int连接成一个long更容易,而使用single long作为键.来自C背景,我希望这样的东西能起作用:
int a, b;
long l = (long)a << 32 | b;
Run Code Online (Sandbox Code Playgroud)
我试图用Java复制这个尝试让我感到沮丧.特别是,因为没有无符号整数类型,我似乎无法避免b的自动符号扩展(a左移以使其无关紧要).我尝试过使用,b & 0x00000000FFFFFFFF但令人惊讶的是没有效果.我也尝试过相当丑陋(long)b << 32 >> 32,但它似乎被编译器优化了.
我希望严格使用基元的位操作,但我开始怀疑是否需要使用某种缓冲对象来实现这一点.
java ×1