Minha tentativa:
public static byte[] toBytes(final int intVal, final int... intArray) {
if (intArray == null || (intArray.length == 0)) {
return ByteBuffer.allocate(4).putInt(intVal).array();
} else {
final ByteBuffer bb = ByteBuffer.allocate(4 + (intArray.length * 4)).putInt(intVal);
for (final int val : intArray) {
bb.putInt(val);
}
return bb.array();
}
}
Com ele você pode fazer isso:
byte[] fourBytes = toBytes(0x01020304);
byte[] eightBytes = toBytes(0x01020304, 0x05060708);
A turma completa está aqui: https://gist.github.com/superbob/6548493 , suporta inicialização de curtos ou longos
byte[] eightBytesAgain = toBytes(0x0102030405060708L);