Long을 바이트 배열로 변환하고 Java에서 다시 변환
Java에서는 긴 기본 데이터 유형을 바이트 배열로 변환(byte[] ) 및 그 반대의 경우는 TCP 연결을 통해 데이터를 전송하는 등 다양한 작업에 대한 일반적인 작업입니다. 이 변환을 달성하기 위한 포괄적인 솔루션은 다음과 같습니다.
Long을 바이트 배열로
public byte[] longToBytes(long x) {
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
buffer.putLong(x);
return buffer.array();
}
이 메서드는 ByteBuffer 클래스를 사용하여 Long 값을 나타내는 데 필요한 바이트 수인 Long.BYTES 크기의 버퍼를 생성합니다. putLong() 메서드는 Long 값을 버퍼에 쓰는 데 사용되며 array() 메서드는 Long을 나타내는 기본 바이트 배열을 반환합니다.
바이트 배열을 Long
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();
}
바이트 배열을 다시 long으로 변환하기 위해 새 ByteBuffer가 생성되고 지정된 바이트 배열과 함께 로드됩니다. Flip() 메서드는 버퍼를 읽을 수 있도록 준비하는 데 사용됩니다. 마지막으로, getLong() 메소드는 버퍼에서 긴 값을 읽습니다.
헬퍼 클래스의 캡슐화
편의를 위해 변환 메소드는 유틸리티에 캡슐화될 수 있습니다. class:
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();
}
}
이 유틸리티 클래스는 매번 ByteBuffer 인스턴스를 생성하고 관리할 필요 없이 변환을 수행하는 간단한 방법을 제공합니다.
엔디안 고려 사항
참고 ByteBuffer 클래스는 시스템의 기본 엔디안을 사용합니다. 플랫폼 간 호환성이 필요한 경우 엔디안 처리를 위한 추가 고려 사항이 필요할 수 있습니다.
대체 솔루션: 라이브러리 사용
위에 제공된 기본 Java 솔루션은 적절하지만, 특정 시나리오에서는 지루해질 수 있습니다. 복잡하거나 확장된 데이터 변환이 필요한 경우 보다 포괄적이고 효율적인 솔루션을 제공하는 Guava 또는 Apache Commons와 같은 라이브러리 사용을 고려해보세요.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3