I'm reading a 16 byte array (byte[16]
) from a JDBC ResultSet
with rs.getBytes("id")
and now I need to convert it to two long values. How can I do that?
This is the code I have tried, but I probably didn't use ByteBuffer
correctly.
byte[] bytes = rs.getBytes("id");
System.out.println("bytes: "+bytes.length); // prints "bytes: 16"
ByteBuffer buffer = ByteBuffer.allocate(16);
buffer = buffer.put(bytes);
// throws an java.nio.BufferUnderflowException
long leastSignificant = buffer.getLong();
long mostSignificant = buffer.getLong();
I stored the byte array to the database using:
byte[] bytes = ByteBuffer.allocate(16)
.putLong(leastSignificant)
.putLong(mostSignificant).array();
You can do