package org.jcodec.codecs.util;
import java.io.ByteArrayOutputStream;
public class BinUtil {
/**
* Converts a string in the form "[01]*" into bits and packs them into byte
* array
*
* @param str
* @return
*/
public static byte[] binaryStringToBytes(String str) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int curByte = 0;
int i, bc = 0;
for (i = 0; i < str.length(); i++) {
int bit;
char charAt = str.charAt(i);
if (charAt == '1')
bit = 1;
else if (charAt == '0')
bit = 0;
else
continue;
curByte |= bit << (7 - bc % 8);
if (bc % 8 == 7) {
baos.write(curByte);
curByte = 0;
}
bc++;
}
if (bc % 8 != 0)
baos.write(curByte);
return baos.toByteArray();
}
}