我想将二进制字符串转换为java中的字节数组。我已经编写了代码来设置二进制字符串String A = "1000000111010000"中字节数组的每一位

        private byte firstByte;
    private byte secondByte;
        byte xByte = new byte[2];

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

            if(i<8){
                System.out.println(" i : "+i+" A.char[i] :"+A.charAt(i));
                firstByte = (byte) (firstByte | (A.charAt(i) << i));
            }else{
                System.out.println(" i : "+i+" A.char[i] :"+A.charAt(i));
                secondByte = (byte) (secondByte | (A.charAt(i) << i));
            }
        }
        xByte[0] = firstByte;
        xByte[1] = secondByte;


为了编写上面的代码,我从this链接获取了帮助。
但是将值存储在xByte[0]xByte[1]中是不正确的。
它给出像

                   xByte[0] :-15
                   xByte[1] :0


这是写方法吗?请建议我进行更正以获得正确的字节值。

最佳答案

您不能简单地将A.charAt(i)强制转换为int。它将返回1和0的ASCII码。

因此,您需要执行以下操作以获取其数值:-

int bit = Character.getNumericValue(A.charAt(i)); // This will give the actual value
...
firstByte = (byte) (firstByte | (bit << i));

10-04 17:26