[java] Java 정수 대 바이트 배열

나는 정수를 얻었다 : 1695609641

내가 방법을 사용할 때 :

String hex = Integer.toHexString(1695609641);
system.out.println(hex); 

제공합니다 :

6510f329

하지만 바이트 배열을 원합니다.

byte[] bytearray = new byte[] { (byte) 0x65, (byte)0x10, (byte)0xf3, (byte)0x29};

어떻게 만들 수 있습니까?



답변

Java NIO의 ByteBuffer를 사용하는 것은 매우 간단합니다.

byte[] bytes = ByteBuffer.allocate(4).putInt(1695609641).array();

for (byte b : bytes) {
   System.out.format("0x%x ", b);
}

산출:

0x65 0x10 0xf3 0x29


답변

어때요?

public static final byte[] intToByteArray(int value) {
    return new byte[] {
            (byte)(value >>> 24),
            (byte)(value >>> 16),
            (byte)(value >>> 8),
            (byte)value};
}

아이디어는 것이 아니다 . 나는에서 촬영했습니다 dzone.com에 대한 몇 가지 게시물 .


답변

BigInteger.valueOf(1695609641).toByteArray()


답변

byte[] IntToByteArray( int data ) {
    byte[] result = new byte[4];
    result[0] = (byte) ((data & 0xFF000000) >> 24);
    result[1] = (byte) ((data & 0x00FF0000) >> 16);
    result[2] = (byte) ((data & 0x0000FF00) >> 8);
    result[3] = (byte) ((data & 0x000000FF) >> 0);
    return result;
}


답변

구아바 사용 :

byte[] bytearray = Ints.toByteArray(1695609641);


답변

byte[] conv = new byte[4];
conv[3] = (byte) input & 0xff;
input >>= 8;
conv[2] = (byte) input & 0xff;
input >>= 8;
conv[1] = (byte) input & 0xff;
input >>= 8;
conv[0] = (byte) input;


답변

public static byte[] intToBytes(int x) throws IOException {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    DataOutputStream out = new DataOutputStream(bos);
    out.writeInt(x);
    out.close();
    byte[] int_bytes = bos.toByteArray();
    bos.close();
    return int_bytes;
}