我目前正在学习java,并制作游戏。我遇到了需要为游戏制作一些测试数据的情况。
我使用二维数组(游戏地图)中的图块,每个图块需要四个 bool-values。因此,我不想使用 true 或 false 编写图块,而是想使用一个简单的Byte,用binary编写。
示例:“0b0110”而不是“假,真,真,假”
所以我需要一种将二进制写入的Bytes转换为Boolean数组的方法。
我目前正在学习java,并制作游戏。我遇到了需要为游戏制作一些测试数据的情况。
我使用二维数组(游戏地图)中的图块,每个图块需要四个 bool-values。因此,我不想使用 true 或 false 编写图块,而是想使用一个简单的Byte,用binary编写。
示例:“0b0110”而不是“假,真,真,假”
所以我需要一种将二进制写入的Bytes转换为Boolean数组的方法。
你可以这样做:
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和boolean原语,除非您需要将它们装箱Byte或Boolean出于其他原因。
用于将一个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变量转换为一个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;
    }