> Java > java지도 시간 > 본문

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

Barbara Streisand
풀어 주다: 2024-11-05 18:11:02
원래의
303명이 탐색했습니다.

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

Java에서 바이트 배열을 Long으로 변환: 종합 가이드

Long 데이터 유형과 바이트 배열 간 변환은 Java 프로그래밍의 기본 작업입니다. 특히 네트워크를 통해 데이터를 교환하거나 바이너리 형식으로 저장할 때 그렇습니다. 이 문서에서는 이 변환을 효과적으로 수행하기 위한 다양한 방법에 대해 설명합니다.

Long을 바이트 배열로 변환

Long 값을 바이트 배열로 변환하려면 다음을 사용할 수 있습니다. 접근 방식:

<code class="java">public byte[] longToBytes(long x) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.putLong(x);
    return buffer.array();
}</code>
로그인 후 복사

이 코드에서는 Long 값을 나타내는 데 필요한 바이트 수와 동일한 크기로 ByteBuffer 객체가 할당됩니다. putLong 메소드는 Long 값을 버퍼에 쓰는 데 사용되며, 마지막으로 array 메소드는 기본 바이트 배열 표현을 검색합니다.

바이트 배열을 Long으로 변환

역변환을 수행하려면 다음 코드를 사용할 수 있습니다.

<code class="java">public long bytesToLong(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.put(bytes);
    buffer.flip(); // Flip the buffer to make it ready for reading
    return buffer.getLong();
}</code>
로그인 후 복사

여기서 ByteBuffer 개체가 다시 사용되며, 이번에는 제공된 바이트 배열을 래핑합니다. put 메소드는 바이트를 버퍼에 복사한 후 버퍼를 뒤집어 이제 읽을 준비가 되었음을 나타내는 데 사용됩니다. 마지막으로, getLong 메소드는 버퍼에서 긴 값을 검색합니다.

반복적인 ByteBuffer 생성 방지

여러 변환이 수행되는 시나리오의 경우 생성을 방지하는 것이 더 효율적입니다. 각 변환에 대한 새로운 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>
로그인 후 복사

이 경우 단일 ByteBuffer 객체가 모든 변환에서 공유되어 객체 생성 오버헤드를 최소화합니다.

결론

이 기사에 설명된 방법은 Java에서 긴 값과 바이트 배열 사이를 변환하는 효율적이고 안정적인 방법을 제공합니다. directByteBuffer 접근 방식을 선택하든 ByteUtils 래퍼를 활용하든 애플리케이션에서 이러한 변환을 자신 있게 처리할 수 있습니다.

위 내용은 Java에서 바이트 배열을 Long으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!