在Java中将二进制字符串转换为字节数组

在Java中将二进制字符串转换为字节数组,java,string,binary,Java,String,Binary,我有一个二进制字符串,我想把它分成长度为8的块,然后存储相应的 字节数组中的字节。例如,字符串“0000000011111111”应该转换为{-128127}。 到目前为止,我编写了以下函数: public static byte[] splitBinary(String binaryString) throws ConversionException { if (binaryString.length()%8 != 0) { throw new ConversionE

我有一个二进制字符串,我想把它分成长度为8的块,然后存储相应的 字节数组中的字节。例如,字符串“0000000011111111”应该转换为{-128127}。 到目前为止,我编写了以下函数:

public static byte[] splitBinary(String binaryString) throws ConversionException {

    if (binaryString.length()%8 != 0) {
        throw new ConversionException();
    }

    byte[] result = new byte[binaryString.length()/8];

    while (i < result.length) {
        result[i] = (byte) (Integer.parseInt(binaryString.substring(i, i+8), 2)-128);
        i+=8;
    }
    return result;
} 
publicstaticbyte[]splitBinary(stringbinarystring)抛出ConversionException{
if(binaryString.length()%8!=0){
抛出新的ConversionException();
}
字节[]结果=新字节[binaryString.length()/8];
而(i

但这会导致{128,0}。如何实现所需的功能?

您的拆分例程错误


将i增加1只会将窗口向右移动一个字符,而不是两个字符,从而导致读取模字符串00000000和00000001。

我指的是结果的大小,它可能小于
二进制字符串的大小,
但是在
binaryString.substring(i,i+8)
i+=8
中;您使用作为
二进制字符串的大小。

因此,将它们更改为
binaryString.substring(i*8,i*8+8)
i++

我以以下方式更改了函数,现在它可以按预期工作(在更正我的预期之后;)。谢谢大家!

public static byte[] splitBinaryStringToByteArray(String binaryString) throws ConversionException {

    if (binaryString.length()%8 != 0) {
        throw new ConversionException();
    }

    byte[] result = new byte[binaryString.length()/8];

    int i =0;int j=0;
    while (i < binaryString.length()) {
        System.out.println("Substring: " + binaryString.substring(i, i+8));
        result[j] =((byte)Integer.parseInt((binaryString.substring(i, i+8)), 2));
        j++;
        i+=8;
    }
    return result;
}
公共静态字节[]splitBinaryStringToByteArray(String binaryString)引发ConversionException{
if(binaryString.length()%8!=0){
抛出新的ConversionException();
}
字节[]结果=新字节[binaryString.length()/8];
int i=0;int j=0;
而(i
@sandepkumar OP writed应在中转换为{-128127}i+=8,以便循环是:输入是字符串“00000000 11111111”,输出应该是字节数组{-128127}。@Vihar否!这将导致访问无效的
result[8]
。@请参阅“优化”一个不同的索引可用于结果,但根据问题,这是下一次迭代应使用的索引迭代1:0到7迭代2:8到15,依此类推!我在问题中改了。但是现在它导致了{-128,0}。你改变了你的问题,并且否决了一个不再适合你改变的问题的答案?我没有否决任何人!我只是想用你有用的评论。。。