>Java >java지도 시간 >Java에서 Long을 바이트 배열로 변환하고 다시 변환하는 방법은 무엇입니까?

Java에서 Long을 바이트 배열로 변환하고 다시 변환하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-06 16:58:02501검색

How to Convert a Long to a Byte Array and Back in Java?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.