如何将从txt文件读取的字符0和1转换为字节?

时间:2016-02-11 10:38:30

标签: java text-files

我想读取包含0和1的txt文件,并将它们转换为字节但首先转换为二进制文件。例如textFile包含“00101001”。每个字符都是1个字节,从文件读取后我得到8个字节。现在我想将它们附加到String并转换为byte。我应该从8个字节得到1个字节。是吗?

有更好的选择吗? 到目前为止我做了什么:

public byte[] convertBytes(String File1, int length) throws IOException
{

    byte BytesfromFile[]=readInput(File1,length);          // readinput() returns (length*8) bytes,contains 48 or 49s.
    StringBuilder stringBuilder = new StringBuilder();             //Stringbuilder append chars to build String
    byte convertedBytes[]=new byte[BytesfromFile.length/8];            //size of byte array init
    int stringToInt;
    byte intToByte;

    for(int index=0,bitcounter=0,indexCoverted=0;index<BytesfromFile.length;index++,++bitcounter)
    {

        stringBuilder.append((char) BytesfromFile[index]); //append 48 or 49 casted to char

        if(bitcounter==8)
        {   String Binary = stringBuilder.toString();   // if 8 bits appended, toString
            stringToInt = Integer.parseInt(Binary, 2);  // convert Binary String to Int
            intToByte = (byte)stringToInt;              // cast Int to byte
            convertedBytes[indexCoverted++]=intToByte;
            bitcounter=0;
            stringBuilder.setLength(0);                 //set length to 0, to append next 8 bit.
        }
    }
            return convertedBytes;
}

1 个答案:

答案 0 :(得分:1)

您可以使用Byte.parseByte方法,基数为2:

byte b = Byte.parseByte(str, 2);

您也可以使用BigInteger(String val,int radix)构造函数快速对String个二进制数字进行转换:

String input = "1010010010010101010010010101001";
byte[] arr = new BigInteger(input, 2).toByteArray();

// Result:
// [82, 74, -92, -87]