繁体   English   中英

将字节数组中每个字节的最后3位存储到新的字节数组中

[英]Store 3 last bits of each byte in a byte array to new byte array

我有一个字节数组: byte[] test= new byte[100]; 我想在数组测试中读取每个字节的3 bits并将其存储在新数组中(例如: byte[] result ),能否请您告诉我最佳方法?

byte[] test= new byte[15];
    test[0]=0;
    test[1]=1;
    test[2]=2;
    test[3]=3;
    test[4]=4;
    test[5]=5;
    test[6]=6;
    test[7]=7;
    test[8]=8;
    test[9]=9;
    test[10]=10;
    test[11]=11;
    test[12]=12;
    test[13]=13;
    test[14]=14;

    byte[] bitSet = new byte[8];
    int offset =0;
    int result = 0;
    while (offset < test.length){
    for (int i = 0; i < bitSet.length; i++) {

            bitSet[i] =  (byte) (test[offset] & 7 ); 
            System.out.println(bitSet[i]);
            offset++;

        }   
    }
    result = ((bitSet[0] << 7) + (bitSet[1] << 6) + (bitSet[2] << 5) + (bitSet[3] << 4) + (bitSet[4] << 3)
            + (bitSet[5] << 2) + (bitSet[6] << 1) + (bitSet[7] << 0));

    System.out.print(result);

我已经尝试了上面的代码,但是在bitSet [i] =(byte)(test [offset]&7)行中失败了; 可以让一些身体看看! 我真的是编程新手

for循环可以解决问题

for (int i = 0; i < test.length; i++) {
    result[i] = test[i] & 7; // get the 3 lower bits, use whatever "mask" you need
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM