有没有办法在java中将字节转换为布尔数组?

时间:2014-02-19 22:31:12

标签: java boolean type-conversion byte

我正在尝试编写一个传输4字节流的TCP服务器/客户端程序。一旦客户端收到4个字节,我就想将每个接收到的字节转换为布尔值[8]。有没有办法做到这一点?我可以成功地将4个字节从服务器传输到客户端,并且客户端接收的每个字节的值与传输到服务器的值匹配。我已经在我下面粘贴的客户端编写的转换方法中查明了错误,如果需要,我可以根据请求发布更多代码。

样本输入======( - 2 11111110)( - 110 11110110)( - 2 11111110)( - 2 11111110)

实际输出====( - 2 11111110)( - 110 11110110)( - 2 11111110)( - 2 11111110)

预期输出==( - 2 11111110)( - 110 11110110)( - 2 11111110)( - 2 11111110)[与输入相同]

public static boolean[] byteToBoolArr(byte x) {
    boolean[] boolArr = new boolean[8];
    boolArr[0] = ((x & 0x01) != 0);
    boolArr[1] = ((x & 0x02) != 0);
    boolArr[2] = ((x & 0x04) != 0);
    boolArr[3] = ((x & 0x08) != 0);

    boolArr[4] = ((x & 0x16) != 0);
    boolArr[5] = ((x & 0x32) != 0);
    boolArr[6] = ((x & 0x64) != 0);
    boolArr[7] = ((x & 0x128) != 0);
    return boolArr;
}

2 个答案:

答案 0 :(得分:5)

您正在使用0x指定十六进制值,但是请继续使用十进制数。 0x08恰好是8,但0x16不是16。尝试

boolArr[4] = ((x & 0x10) != 0);
boolArr[5] = ((x & 0x20) != 0);
boolArr[6] = ((x & 0x40) != 0);
boolArr[7] = ((x & 0x80) != 0);

答案 1 :(得分:1)

实际上,这是一种非常漂亮的方式。

in both the client and server to animate