Класс BitSet, очевидно, не предназначен для экспорта или импорта своих битов в собственные типы данных и также довольно тяжелый, если вы просто хотите иметь дело с фиксированным размером одного байта. Таким образом, это может быть не то, что вам нужно, если вы просто хотите независимо обрабатывать биты байта, а затем использовать полученный байт. Кажется, вы можете просто захотеть использовать такой API:
SimpleBitSet bs = new SimpleBitSet( 'A' );
bs.setBit( 5 );
byte mybyte = bs.getByte();
Таким образом, реализация такого упрощенного набора битов может выглядеть так:
public class SimpleBitSet
{
private byte bits;
public SimpleBitSet( int bits )
{
this.bits = (byte) bits;
}
public byte getByte()
{
return bits;
}
public boolean getBit( int idx )
{
checkIndex( idx );
return ( bits & ( 1 << idx ) ) != 0;
}
public void setBit( int idx )
{
checkIndex( idx );
bits |= 1 << idx;
}
public void clearBit( int idx )
{
checkIndex( idx );
bits &= ~( 1 << idx );
}
protected void checkIndex( int idx )
{
if( idx < 0 || idx > 7 )
throw new IllegalArgumentException( "index: " + idx );
}
}