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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-04 21:08:01184검색

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

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

Java에서는 긴 기본 데이터 유형을 바이트 배열로 변환(byte[] ) 그 반대의 경우는 TCP 연결을 통해 데이터를 전송하는 등 다양한 작업에 대한 일반적인 작업입니다. 이 변환을 달성하기 위한 포괄적인 솔루션은 다음과 같습니다.

Long을 바이트 배열로

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

이 메서드는 ByteBuffer 클래스를 사용하여 Long.BYTES 크기의 버퍼를 생성합니다. 이는 긴 값을 나타내는 데 필요한 바이트 수입니다. putLong() 메서드는 Long 값을 버퍼에 쓰는 데 사용되며 array() 메서드는 Long을 나타내는 기본 바이트 배열을 반환합니다.

Byte Array to Long

<code class="java">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();
}</code>

바이트 배열을 다시 long으로 변환하기 위해 새로운 ByteBuffer가 생성되고 지정된 바이트 배열과 함께 로드됩니다. Flip() 메서드는 버퍼를 읽을 수 있도록 준비하는 데 사용됩니다. 마지막으로 getLong() 메소드는 버퍼에서 long 값을 읽습니다.

헬퍼 클래스의 캡슐화

편의를 위해 변환 메소드를 유틸리티에 캡슐화할 수 있습니다. class:

<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(); // Flip the buffer to prepare for reading
        return buffer.getLong();
    }
}</code>

이 유틸리티 클래스는 매번 ByteBuffer 인스턴스를 생성하고 관리할 필요 없이 변환을 수행하는 간단한 방법을 제공합니다.

엔디안 고려 사항

ByteBuffer 클래스는 시스템의 기본 엔디안을 사용합니다. 크로스 플랫폼 호환성이 필요한 경우 엔디안 처리에 대한 추가 고려 사항이 필요할 수 있습니다.

대체 솔루션: 라이브러리 사용

위에 제공된 기본 Java 솔루션이 적절하지만, 특정 시나리오에서는 지루해질 수 있습니다. 복잡하거나 확장된 데이터 변환이 필요한 경우 보다 포괄적이고 효율적인 솔루션을 제공하는 Guava 또는 Apache Commons와 같은 라이브러리 사용을 고려해 보세요.

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

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