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

标签 java boolean type-conversion byte

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

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

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

预期输出==(-2 11111110) (-10 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;
}

最佳答案

您正在使用 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);

关于java - 有没有办法在java中将字节转换为 boolean 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894023/

相关文章:

numbers - Rust 有办法将几个字节转换为数字吗?

java - 在 Spring Security 中手动过期(失效)后 session 不会被销毁

java - 计算 arraylist 中的出现次数并创建另一个 arraylist

sqlite - codenameone 在 sqlite 中将 boolean 值存储为 true/false,而它们应该是 1/0

c# - 在 Lambda 表达式中使用三元运算符

java - 如何实现父类(super class)对象转换为子类对象的效果?

java - 不同类中的不同 HTTP POST 使用相同的方法?

java - 不支持 fn JSTL

Oracle 缺少表列的 Bit 数据类型

c - 将有符号字符读为无符号字符 - 类型提升