Я читаю 16-байтовый массив (byte[16]
) из JDBC ResultSet
с rs.getBytes("id")
, и теперь мне нужно преобразовать его в два длинных значения.Как я могу это сделать?
Это код, который я пробовал, но я, вероятно, неправильно использовал ByteBuffer
.
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();
Я сохранил байтовый массив в базе данных, используя:
byte[] bytes = ByteBuffer.allocate(16)
.putLong(leastSignificant)
.putLong(mostSignificant).array();