ByteCodec implements BlockCodec<Byte> { @Override public byte[] encode(Byte data, int bitLength) throws BlockCodecException { int _bitLength = Math.min(8, bitLength); byte result = ByteUtils.valueRight(data.byteValue(), 8 - _bitLength); result = (byte) (result << (8 - _bitLength)); return new byte[] { result }; }  @Override Byte zeroValue(); @Override Byte decode(byte[] data, int bitLength); @Override byte[] encode(Byte data, int bitLength); @Override void reset(); @Override String getValueType();  }
@Test public void testEncode() throws Exception { ByteCodec codec = new ByteCodec(); Assert.assertEquals((byte) 0x7f, codec.encode((byte) 0x7f, 8)[0], 0); Assert.assertEquals((byte) 0x7e, codec.encode((byte) 0x3f, 7)[0], 0); Assert.assertEquals((byte) 0x7c, codec.encode((byte) 0x1f, 6)[0], 0); Assert.assertEquals((byte) 0x78, codec.encode((byte) 0x0f, 5)[0], 0); Assert.assertEquals((byte) 0x70, codec.encode((byte) 0x07, 4)[0], 0); Assert.assertEquals((byte) 0x60, codec.encode((byte) 0x03, 3)[0], 0); Assert.assertEquals((byte) 0x40, codec.encode((byte) 0x01, 2)[0], 0); Assert.assertEquals((byte) 0x00, codec.encode((byte) 0x00, 1)[0], 0); }