package nl.thanod.cassandra.alpha.bytes; import nl.thanod.annotations.spi.ProviderFor; @ProviderFor(ByteObjectTranslator.class) public class ByteIntegerTranslator extends ByteObjectTranslator<Integer> { public ByteIntegerTranslator() { super(Integer.class); } @Override public byte[] get(Integer o) { byte [] bytes = new byte [ 4]; int i = o; bytes[3] = (byte)((i >> 24) & 0xFF); bytes[2] = (byte)((i >> 16) & 0xFF); bytes[1] = (byte)((i >> 8) & 0xFF); bytes[0] = (byte)((i >> 0) & 0xFF); return bytes; } @Override public Integer get(byte[] b) { if (b.length != 4) throw new NumberFormatException("An integer is always 4 bytes, not " + b.length); int i = 0; i |= ((int)b[3]) << 24; i |= ((int)b[2]) << 16; i |= ((int)b[1]) << 8; i |= ((int)b[0]) << 0; return i; } }