如何在java中将数字转换为布尔数组?

时间:2013-02-04 19:06:42

标签: java arrays boolean byte

  

可能重复:
  Convert a byte into a boolean array of length 4 in Java

我目前正在学习java,并制作游戏。 我已经遇到了这种情况,我需要为游戏制作一些测试数据

我使用2D数组(游戏地图)中的切片,每个切片需要四个布尔值。 因此,我不想使用真或假的格式,而是想在二进制中使用简单的字节编写

示例:“0b0110”而不是“false,true,true,false”

所以我需要一种方法二进制 - 写入的字节转换为布尔数组

2 个答案:

答案 0 :(得分:5)

您可以这样做:

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);
}

我建议您使用byteboolean原语,除非您出于其他原因需要将它们标记为ByteBoolean

答案 1 :(得分:0)

boolean to byte

将一个boolean变量转换为一个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);
        }

byte to boolean

将一个byte变量转换为一个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;
    }