我想将二进制字符串转换为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));