salve a tutti

c'e` un piccolo problema che sto cercando di risolvere con scarso successo, magari voi potete aiutarmi: data una "stringa di bit", cioe` un oggetto di tipo String che come caratteri contiene solo 0 e 1, qual e` secondo voi il modo migliore per prendere i singoli "byte" da questa stringa e tradurli in un vero e proprio carattere secondo il charset specificato?

ho tentato ad esempio di usare il metodo Byte.parseByte, con base 2, ma se gli passo 8 bit da un errore, perche` a quanto pare e` un byte signed, non unsigned... questo e` quello che ho tentato finora:

codice:
public static String toString(String str, String charset)
{
	if(!isBitString(str)) return str; //se NON e` una bistring la ritorno
	else
	{
		String ret = null; // output
		byte[] arr = new byte[str.length()/8 + 1]; byte array per il parsing della stringa di bit
		for(int i=0;i<str.length();i+=8)
			arr[i/8] = Byte.parseByte(str.substring(i,i+8), 2); // metodo parseByte che NON riesco a far funzionare come vorrey
		try
		{
			if(charset == null)
				ret = new String(arr, "US-ASCII"); // a partire dal byte array, creo la stringa di output
			else
				ret = new String(arr, charset);
		}
		catch(Exception e)
		{
			System.err.println(e.getMessage());
			System.exit(0);
		}
		return ret;
	}
}
ma non funziona suggerimenti? qual e` una maniera semplice di modificare un byte bit per bit?

grazie in anticipo per l'aiuto