我想读取包含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;
}
答案 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]