develog

[Java] byte <-> int 본문

Dev/Java

[Java] byte <-> int

냐옴 2014. 7. 27. 15:34
source

import java.nio.ByteBuffer;

import java.nio.ByteOrder;


public class TestMain {

public static void main(String[] args) throws Exception {

int n = 264;

int r;

byte[] bytes;

System.out.println(n);

// ByteOrder.BIG_ENDIAN : 상위 바이트부터 왼쪽에 저장 (Default)

// ByteOrder.LITTLE_ENDIAN : 하위 바이트부터 왼쪽에 저장

bytes = intToByte(n, ByteOrder.BIG_ENDIAN);

print(bytes);

r = byteToInt(bytes, ByteOrder.BIG_ENDIAN);

System.out.println(r);

bytes = intToByte(n);

print(bytes);

r = byteToInt(bytes);

System.out.println(r);

}

public static byte[] intToByte(int n) {

byte[] bytes = new byte[] {

 (byte) (n >> 24)

, (byte) (n >> 16)

, (byte) (n >> 8)

, (byte) (n)

};

return bytes;

}

public static int byteToInt(byte[] bytes) {

int n =   (bytes[0] << 24 & 0xffffffff)

| (bytes[1] << 16 & 0xffffff)

| (bytes[2] << 8 & 0xffff)

| (bytes[3] & 0xff);

return n;

}

public static byte[] intToByte(int n, ByteOrder order) {

ByteBuffer bb = ByteBuffer.allocate(Integer.SIZE / 8);

bb.order(order);

bb.putInt(n);

return bb.array();

}

public static int byteToInt(byte[] bytes, ByteOrder order) {

ByteBuffer bb = ByteBuffer.allocate(Integer.SIZE / 8);

bb.order(order);

bb.put(bytes);

bb.flip();

return bb.getInt();

}

public static void print(byte[] bytes) {

for (int i = 0; i < bytes.length; i++) {

System.out.print(Integer.toHexString(0xff & bytes[i]));

System.out.print(" ");

}

System.out.println();

}

}





'Dev > Java' 카테고리의 다른 글

[Java] 익명 PL/SQL 블럭 실행  (0) 2014.08.29
[Spring] dbcp 설정  (0) 2014.08.08
[Java] bit & shift 연산  (0) 2014.07.26
byte, int, 한글  (0) 2014.07.26
Quartz Clustering  (0) 2014.06.24
Comments