"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java에서 정수를 바이트 배열로 효율적으로 변환하는 방법은 무엇입니까?

Java에서 정수를 바이트 배열로 효율적으로 변환하는 방법은 무엇입니까?

2024년 11월 15일에 게시됨
검색:443

How to Efficiently Convert Integers to Byte Arrays in Java?

Java에서 정수를 바이트 배열로 효율적으로 변환

정수를 바이트 배열로 변환하는 것은 네트워크와 같은 다양한 목적에 유용할 수 있습니다. 전송 또는 데이터 저장. 이 변환을 수행하는 방법에는 여러 가지가 있습니다.

ByteBuffer 클래스:

한 가지 효율적인 방법은 ByteBuffer 클래스를 사용하는 것입니다. ByteBuffer는 바이너리 데이터를 저장하고 이를 조작하기 위한 다양한 연산을 제공하는 버퍼입니다. ByteBuffer를 사용하여 정수를 바이트 배열로 변환하려면:

ByteBuffer b = ByteBuffer.allocate(4); // Allocate a 4-byte buffer
b.putInt(0xAABBCCDD); // Write the integer value to the buffer

byte[] result = b.array(); // Retrieve the byte array from the buffer

여기서 버퍼의 바이트 순서는 바이트가 올바른 순서로 정렬되도록 보장합니다.

수동 변환:

또는 정수를 바이트 배열로 수동으로 변환할 수 있습니다.

byte[] toBytes(int i) {
  // Create a new byte array of length 4
  byte[] result = new byte[4];
  
  // Shift bits and assign to each byte
  result[0] = (byte) (i >> 24);
  result[1] = (byte) (i >> 16);
  result[2] = (byte) (i >> 8);
  result[3] = (byte) i;
  
  return result;
}

이 접근 방식에는 명시적인 비트 이동과 각 바이트에 대한 할당이 필요합니다.

java.nio.Bits의 도우미 메서드:

ByteBuffer 클래스 java.nio.Bits 클래스에 정의된 내부 도우미 메소드를 활용합니다:

private static byte int3(int x) { return (byte)(x >> 24); }
private static byte int2(int x) { return (byte)(x >> 16); }
private static byte int1(int x) { return (byte)(x >>  8); }
private static byte int0(int x) { return (byte)(x >>  0); }

이러한 방법은 위에서 언급한 비트 이동 작업을 단순화합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3