Ответ 1
ByteBuffer
хорошо работает для этого: просто введите 64 long
значения и получите byte[]
с помощью array()
метод. Класс ByteOrder
может эффективно обрабатывать конечные проблемы. Например, включение подхода, предложенного в комментарии wierob:
private static byte[] xform(long[] la, ByteOrder order) {
ByteBuffer bb = ByteBuffer.allocate(la.length * 8);
bb.order(order);
bb.asLongBuffer().put(la);
return bb.array();
}
Добавление: результирующие компоненты byte[]
являются подписанными 8-битными значениями, но для массивов Java требуется значения неотрицательных целых значений. Выделение a byte
в int
приведет к расширению знака, но при маскировке бит более высокого порядка будет выдаваться значение без знака byte b
:
int i = (int) b & 0xFF;
Этот ответ описывает действующие правила приоритета операторов. Этот связанный ответ демонстрирует аналогичный подход для значений double
.