long
with バイト(各文字は 1 バイト) が与えられた場合、元のバイトと同じバイトをWXYZ
2 つ作成し、0 バイトをインターリーブする高速なビット調整コードが必要です。longs
たとえば、long
with 値ABCDEFGH
(各文字は 1 バイト) を指定すると、2 つの long 型が生成されます。
0A0B0C0D
0E0F0G0H
以下と同等ですが、より高速です。
long result1 = expand((int)(input >>> 32));
long result2 = expand((int)input);
long expand(int inputInt) {
long input = intputInt;
return
(input & 0x000000FF) |
(input & 0x0000FF00) << 8 |
(input & 0x00FF0000) << 16 |
(input & 0xFF000000) << 24;
}