Преобразование Long в массив байтов и обратно в Java
В Java преобразование примитивного типа данных long в массив байтов (byte[] ) и наоборот — это обычная задача для различных операций, например отправки данных по TCP-соединению. Вот комплексное решение для такого преобразования:
Long to Byte Array
public byte[] longToBytes(long x) {
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
buffer.putLong(x);
return buffer.array();
}
Этот метод использует класс ByteBuffer для создания буфера размером Long.BYTES, который представляет собой количество байтов, необходимое для представления длинного значения. Метод putLong() используется для записи длинного значения в буфер, а метод array() возвращает базовый массив байтов, представляющий длинное значение.
Массив байтов в Long
public long bytesToLong(byte[] bytes) {
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
buffer.put(bytes);
buffer.flip(); // Flip the buffer to prepare for reading
return buffer.getLong();
}
Чтобы преобразовать массив байтов обратно в длинный, создается новый ByteBuffer и загружается с данным массивом байтов. Метод Flip() используется для подготовки буфера к чтению. Наконец, метод getLong() считывает длинное значение из буфера.
Инкапсуляция во вспомогательном классе
Для удобства методы преобразования можно инкапсулировать в утилиту класс:
public class ByteUtils {
private static ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
public static byte[] longToBytes(long x) {
buffer.putLong(0, x);
return buffer.array();
}
public static long bytesToLong(byte[] bytes) {
buffer.put(bytes, 0, bytes.length);
buffer.flip(); // Flip the buffer to prepare for reading
return buffer.getLong();
}
}
Этот служебный класс предоставляет простой способ выполнения преобразования без необходимости каждый раз создавать экземпляры ByteBuffer и управлять ими.
Соображения относительно порядка байтов
Примечание что класс ByteBuffer использует собственный порядок байтов системы. Если требуется кросс-платформенная совместимость, могут потребоваться дополнительные соображения по обработке порядка байтов.
Альтернативное решение: использование библиотек
Хотя встроенные решения Java, представленные выше, являются адекватными, в определенных сценариях они могут стать утомительными. Для сложных или расширенных задач преобразования данных рассмотрите возможность использования такой библиотеки, как Guava или Apache Commons, которые предоставляют более комплексные и эффективные решения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3