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

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

Mary-Kate Olsen
풀어 주다: 2024-11-06 16:58:02
원래의
610명이 탐색했습니다.

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

Long을 바이트 배열로 변환하고 Java에서 다시 변환

Java에서 Long 값을 byte[]로 변환하고 그 반대로 변환하는 것은 다양한 시나리오에 대한 공통 요구 사항. 이를 달성하는 효율적인 방법을 살펴보겠습니다.

Long을 바이트 배열로 변환

Long을 byte[]로 변환하려면 Java의 ByteBuffer 클래스를 활용할 수 있습니다. 다음은 간단한 예입니다.

1

2

3

4

5

<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의 다른 인스턴스를 사용할 수 있습니다.

1

2

3

4

5

6

<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의 여러 인스턴스를 생성하지 않으려면 다음과 같이 별도의 클래스를 생성할 수 있습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿