JAVA에서 int와 byte array를 서로 변환하기 소스

JAVA에서 바이트 배열을 직접 다루는 작업을 할 때 쓸 수도 있는 코드입니다.
int를 어떻게 바이트 배열로 바꿀까 고민한 적이 있으신 분이라면 도움이 될지도?

/**
* Convert the int to an byte array.
* @param integer The integer
* @return The byte array
*/
private static byte[] intToByteArray(final int integer) {

ByteBuffer buff = ByteBuffer.allocate(Integer.SIZE / 8);
buff.putInt(integer);
buff.order(ByteOrder.BIG_ENDIAN);
return buff.array();
}

/**
* Convert the byte array to an int.
*
* @param bytes The byte array
* @return The integer
*/
private static int byteArrayToInt(byte[] bytes) {

final int size = Integer.SIZE / 8;
ByteBuffer buff = ByteBuffer.allocate(size);
final byte[] newBytes = new byte[size];
for (int i = 0; i < size; i++) {
if (i + bytes.length < size) {
newBytes[i] = (byte) 0x00;
} else {
newBytes[i] = bytes[i + bytes.length - size];
}
}
buff = ByteBuffer.wrap(newBytes);
buff.order(ByteOrder.BIG_ENDIAN);
return buff.getInt();
}


물론 적당히 적당히 짰기 때문에 제대로 쓰실려면 조금 더 수정하셔야 할 겁니다. :)

by NuRi | 2007/09/03 11:21 | 잡동사니 창고 | 트랙백 | 덧글(5)

트랙백 주소 : http://nuridol.egloos.com/tb/1629750
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 쌍부라 at 2007/09/03 15:25
잘 봤습니다 :)

음 자바는 복잡하군요; 맨날

int x = 5, y = 0;
byte[] buf = BitConverter.GetBytes(x);

y = BitConverter.ToInt32(buf);

이렇게 쓰다보니 ^^;;

안그래도 이번학기 자바 듣는데 _no
Commented by NuRi at 2007/09/04 19:47
쌍부라 : 어떤 라이브러리에는 이미 구현되어 있을지도 모르죠. ^^;
Commented by 쌍부라 at 2007/09/05 02:45
호호 닷넷 개발자들이 게으른 이유중 하나는 BCL에서 다 해먹어서일지도 -ㅅ-;;

그런데 ZipStream 같은 것은 BCL에 없어서 J#에 있는 구 자바 기본 라이브러리 패키지를 쓰더라고요.
Commented by 토깽이 at 2011/12/30 17:51
하루종일 고민했던 내용인데..
님 덕분에 바이트 배열들을 정수형으로 변환하는데 성공했습니다.
감사합니다. ^^;;
Commented by 엠제이 at 2012/05/17 08:26
아 정말로 감사합니다!!! 많은 도움 되었습니다 :)

:         :

:

비공개 덧글