可能重复:
在Java 中将字节转换为长度为4的布尔数组
我目前正在学习java,并制作游戏。我遇到了这样的情况,我需要为游戏制作一些测试数据。
我使用2D阵列(游戏地图)中的瓦片,每个瓦片需要四个布尔值。因此,我不想用true或false来写tile,而是想使用一个简单的字节,在二进制中写入。
示例:"0b0110"而不是"false,true,true,false"
因此,我需要一种方法来将我的二进制写入的字节转换为布尔的数组。
您可以这样做:
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;
}