java - 如何将 boolean 数组转换为字节数组

标签 java byte arrays

我写了这个函数:

public static boolean[] convertByteArrayToBoolArray(byte[] byteArr) {

    int numberOfBits = (byteArr.length) * 8;

    boolean[] boolArr = new boolean[numberOfBits];

    int j =0;

    for(int i=0; i<byteArr.length; i++){

        Byte value = byteArr[i];

        boolArr[7+j] = ((value & 0x01) != 0);
        boolArr[6+j] = ((value & 0x02) != 0);
        boolArr[5+j] = ((value & 0x04) != 0);
        boolArr[4+j] = ((value & 0x08) != 0);
        boolArr[3+j] = ((value & 0x10) != 0);
        boolArr[2+j] = ((value & 0x20) != 0);
        boolArr[1+j] = ((value & 0x40) != 0);
        boolArr[0+j] = ((value & 0x80) != 0);

        j+= 8;
    }

    return boolArr;
}

我该如何扭转这个局面。接收 boolean[] 并返回 byte[] 的函数?

最佳答案

你可以尝试这样的事情:

private static byte boolsToByte(final boolean[] array, final int start) {
    byte b = 0;
    for (int i = 0; i < 8; i++) {
        if (array[start + i])
            b |= 1 << (7 - i);
    }
    return b;
}

public static byte[] convertBoolArrayToByteArray(boolean[] boolArr) {
    byte[] byteArr = new byte[boolArr.length/8];
    for (int i = 0; i < byteArr.length; i++)
        byteArr[i] = boolsToByte(boolArr, 8*i);
    return byteArr;
}

关于java - 如何将 boolean 数组转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27990401/

相关文章:

java - 如何在tomcat上处理2000+个请求/秒?

java - JAX-Rs xml 中的出价是如何进行的?

java - Junit 5 测试,获取 java.lang.IllegalStateException : Test classes cannot include @Bean methods

audio - .wav 音频文件的每个样本结构的位数是多少

java - java中从mongodb中提取的3个值的乘法

python - 具有非标准字符到 int 的十六进制转储(字节数组)

c++ - char数组赋值和管理

c - 我的 returnList[0] 被重写为 @5'

php - 类似于 MySQLi 的 PDO 获取数组

c++ - 错误 : cannot increment value of type 'char [6]'