Long을 바이트 배열로 변환하고 Java에서 다시 변환
Java에서 Long 값을 byte[]로 변환하고 그 반대로 변환하는 것은 다양한 시나리오에 대한 공통 요구 사항. 이를 달성하는 효율적인 방법을 살펴보겠습니다.
Long을 바이트 배열로 변환
Long을 byte[]로 변환하려면 Java의 ByteBuffer 클래스를 활용할 수 있습니다. 다음은 간단한 예입니다.
<code class="java">public byte[] longToBytes(long x) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.putLong(x); return buffer.array(); }</code>
바이트 배열을 Long으로 변환
byte[]를 다시 long으로 변환하려면 ByteBuffer의 다른 인스턴스를 사용할 수 있습니다.
<code class="java">public long bytesToLong(byte[] bytes) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.put(bytes); buffer.flip(); return buffer.getLong(); }</code>
참고: 위 코드에서는 버퍼를 쓰기 모드에서 읽기 모드로 전환하므로 긴 값을 검색하기 전에 buffer.flip()을 호출하는 것이 중요합니다.
최적화된 클래스 기반 접근 방식
반복적인 변환을 위해 ByteBuffer의 여러 인스턴스를 생성하지 않으려면 다음과 같이 별도의 클래스를 생성할 수 있습니다.
<code class="java">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(); return buffer.getLong(); } }</code>
엔디안 고려 사항
long과 byte[] 사이를 변환할 때 작업 중인 시스템의 엔디안을 고려해야 합니다. 엔디안은 바이트가 메모리에 저장되는 순서(리틀 엔디안 또는 빅 엔디안)를 나타냅니다. Java는 빅엔디안을 사용하므로 이 측면은 자동으로 처리됩니다.
대체 접근 방식
이러한 유형의 변환을 수행하기 위한 편리한 방법을 제공하는 Guava와 같은 대체 라이브러리가 있습니다. 그러나 여기에 제시된 기본 Java 솔루션은 대부분의 사용 사례에서 효율적이고 안정적일 수 있습니다.
위 내용은 Java에서 Long을 바이트 배열로 변환하고 다시 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!