【问题标题】:How can I convert a number to an array of Booleans in java? [duplicate]如何在java中将数字转换为布尔数组? [复制]
【发布时间】:2013-02-04 19:06:42
【问题描述】:

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

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

我使用二维数组(游戏地图)中的图块,每个图块需要四个布尔值。 因此,我不想用 true 或 false 来写瓷砖,我想用一个简单的 Bytewritten in binary

示例:"0b0110" 而不是 "false, true, true, false"

所以我需要一种方法将我的二进制写入的字节转换Boolean数组。。 p>

【问题讨论】:

  • 尝试找出如何从一个字节中提取单个位
  • 为什么要将这些转换为boolean[],而不是直接在byte 上操作位?

标签: java arrays boolean byte


【解决方案1】:

你可以这样做:

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

【讨论】:

  • Stackoverflow 的关键制造者 +(10^10)
【解决方案2】:

布尔到字节

用于将一个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;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-02
    • 2022-06-12
    • 2017-02-13
    • 1970-01-01
    • 2014-08-10
    • 2021-12-23
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多