0

重複の可能性:
Javaでバイトを長さ4のブール配列に変換します

私は現在Javaを勉強していて、ゲームを作っています。ゲームのテストデータを作成する必要がある状況になりました。

2D配列(ゲームのマップ)でタイルを操作しますが、各タイルには4つのブール値が必要です。したがって、タイルをtrueまたはfalseで記述する代わりに、バイナリ記述された単純なByteを使用します。

例: 「 false、true、true、false」の代わりに「0b0110 」

したがって、バイナリで記述されたバイトをブール値の配列変換する方法が必要です。

4

2 に答える 2

7

あなたはこのようなことをすることができます:

byte b = 0b0110;
boolean [] flags = new boolean[4];
for (int i = 0; i < 4; ++i) {
    flags[i] = (b & (1 << i)) != 0;
}

逆に行く:

boolean [] flags = {false, true, true, false};
byte b = 0;
for (int i = 0; i < 4; ++i) {
    if (flags[i]) b |= (1 << i);
}

他の理由でボックス化する必要がない限りbyte、プリミティブを使用することをお勧めします。booleanByteBoolean

于 2013-02-04T19:13:10.990 に答える
0

ブール値からバイト

boolean1つの変数を1つの変数に変換するbyte場合:

boolean vIn = true;
byte vOut = (byte) (vIn ? 1 : 0);

booleanの配列をの配列に変換する場合bytes

        boolean[] allBooleans = new boolean[3];
        allBooleans[0] = true;
        allBooleans[1] = false;
        allBooleans[2] = true;
        byte allByte[] = new byte[allBooleans.length];
        for (int i = 0; i < allBooleans.length; i++) {
            allByte[i] = (byte) (allBooleans[i] ? 1 : 0);
        }

バイトからブール値

byte1つの変数を1つのboolean変数に変換する場合

byte vIn = 1;
boolean vOut = vIn != 0;

bytesの配列をの配列に変換するためbooleans

    byte[] allBytes = new byte[3];
    allBytes[0] = new Byte("1");
    allBytes[1] = new Byte("0");
    allBytes[2] = new Byte("1");
    boolean allBoolean[] = new boolean[allBytes.length];
    for (int i = 0; i < allBytes.length; i++) {
        allBoolean[i] = allBytes[i] != 0;
    }
于 2013-02-04T19:14:16.143 に答える