>Java >java지도 시간 >Java long을 바이트로 변환하거나 그 반대로 변환하려면 어떻게 해야 합니까?

Java long을 바이트로 변환하거나 그 반대로 변환하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-09 02:35:02442검색

How can I convert Java longs to bytes and back?

Java Long을 바이트로 변환하고

TCP 연결을 통해 데이터를 전송할 때 데이터 유형을 바이트 배열로 변환해야 하는 경우가 많습니다. 효율적인 전송. Java에서는 다양한 방법을 통해 long을 byte[]로 변환하고 그 반대로 변환할 수 있습니다.

한 가지 접근 방식은 ByteBuffer 클래스를 사용하는 것입니다. Long.BYTES(8바이트)로 ByteBuffer를 생성하면 putLong() 메서드를 사용하여 long 값을 저장하고 array() 메서드를 사용하여 바이트 배열을 검색할 수 있습니다. 바이트 배열을 다시 long으로 변환하려면 또 다른 ByteBuffer를 생성하고 여기에 바이트 배열을 넣고() getLong() 메서드를 사용하여 long 값을 얻어야 합니다.

예는 다음과 같습니다.

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

public long bytesToLong(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.put(bytes);
    buffer.flip(); // Ensure the buffer is ready for reading
    return buffer.getLong();
}</code>

또 다른 접근 방식은 도우미 클래스를 사용하여 반복적인 ByteBuffer 생성을 방지하는 것입니다. 아래의 ByteUtils 클래스는 변환 방법을 캡슐화하므로 여러 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>

이러한 변환을 수행하는 편리한 방법을 제공하여 사용자 지정의 필요성을 줄이는 Guava와 같은 라이브러리도 있다는 점은 주목할 가치가 있습니다. 구현. 그러나 이러한 접근 방식은 엔디안 문제를 자동으로 해결하여 기본 시스템 아키텍처에 관계없이 데이터가 올바르게 전송되고 해석되도록 하는 이점을 제공합니다.

위 내용은 Java long을 바이트로 변환하거나 그 반대로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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